我在這篇文章中讀了一點,但我不知道為什么我失敗了:
Output.replaceAll("(?<=\s)(?!<).*(?=@)", "xxxx")
例如,這將是示例文本:
To: <[email protected]>
I sent an e-mail to [email protected] yesterday
在這里,我想要實作的是替換username為 [email protected]“xxxx”。
我已經有一個用于替換usernamein的正則運算式<[email protected]>,它就像一個魅力:
Output.replaceAll("(?<=<).*(?=@)", "xxxx")
知道我做錯了什么嗎?
順便說一句,我用硬編碼的“xxxx”替換,因為我不明白如何根據匹配結果的長度用一定數量的“x”替換。比如“用戶名”是8個字符,所以我想用“x”替換8次(“xxxxxxxx”)。知道我應該看什么來學習嗎?我用谷歌搜索了幾次,但從未找到任何文章,所以我想我只是不知道正確的術語。
uj5u.com熱心網友回復:
您可以.*在您的正則運算式中替換為[^\s] .
至于用 xxx 替換,replaceAllfunction 可以接受一個函式作為替換器:
console.log(
"I sent an e-mail to [email protected] yesterday".replaceAll(
/(?<=\s)(?!<)[^\s] (?=@)/g,
(...match) => {
let username = match[0]
let replacer = ""
for (let i = 0; i < username.length; i ){
replacer = "x"
}
return replacer
})
)
你可以在這里閱讀
uj5u.com熱心網友回復:
您可以匹配:
- 第一個字符,后跟非空格字符和一個
@符號 - 最后一個字符匹配后的任何字符
\G\w
這是正則運算式:
\w(?=[^\s] @)|(?!^)\G\w
在此處查看演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/487197.html
標籤:javascript 正则表达式
