[英]Regular expression for email masking
我正在嘗試編寫一個正則表達式來掩蓋電子郵件地址。 下面的例子。
輸入:john.doe@example.en.com
輸出:j*******@e*********.com
我嘗試了以下方法,但似乎無法正常工作。
正則表達式:
(?<=.).(?=[^@]\\*?@)
輸出:j ******* @ example.en.com
regex:
(?<=.).(?=[^@]\\*?)(?=[^\\.]\\*?\\.)
輸出:j ******************。com
任何幫助,將不勝感激。 演示
foo@bar.com
f**@b**.com
(當前問題) s.replaceAll("(?<=.)[^@](?=[^@]*?@)|(?:(?<=@.)|(?!^)\\\\G(?=[^@]*$)).(?=.*\\\\.)", "*")
(請參閱regex演示 )
foo@bar.com
f**@b*r.com
s.replaceAll("(?<=.)[^@](?=[^@]*?@)|(?:(?<=@.)|(?!^)\\\\G(?=[^@]*$)).(?=.*[^@]\\\\.)", "*")
f**@b*r.com
- s.replaceAll("(?<=.)[^@](?=[^@]*?@)|(?:(?<=@.)|(?!^)\\\\G(?=[^@]*$)).(?=.*[^@]\\\\.)", "*")
(請參閱regex演示 )
foo@bar.com
⇒ f*o@b*r.com
- s.replaceAll("(?<=.)[^@](?=[^@]*?[^@]@)|(?:(?<=@.)|(?!^)\\\\G(?=[^@]*$)).(?=.*[^@]\\\\.)", "*")
見的正則表達式演示 )
foo@bar.com
f**@b*****m
- s.replaceAll("(?<=.)[^@](?=[^@]*?@)|(?:(?<=@.)|(?!^)\\\\G(?=[^@]*$)).(?!$)", "*")
(請參閱regex演示 )
foo@bar.com
f*o@b*****m
- s.replaceAll("(?<=.)[^@](?=[^@]*[^@]@)|(?:(?<=@.)|(?!^)\\\\G(?=[^@]*$)).(?!$)", "*")
(請參閱regex演示 )
萬一您不能使用基於代碼的解決方案,可以使用
s.replaceAll("(?<=.)[^@](?=[^@]*?@)|(?:(?<=@.)|(?!^)\\G(?=[^@]*$)).(?=.*\\.)", "*")
它的作用是 :
(?<=.)[^@](?=[^@]*?@)
-除@
( [^@]
)以外的任何字符,其后跟任何單個字符( (?<=.)
),並且后跟@
以外的0或更多字符,直至@
( (?=[^@]*?@)
) |
- 要么 (?:(?<=@.)|(?!^)\\\\G(?=[^@]*$))
-匹配字符串中以@
和任何字符開頭的位置( (?<=@.)
)或( |
)上一個成功匹配項( (?!^)\\\\G
)的末尾,其后跟@
uo以外的任何0+字符到字符串的末尾( (?=[^@]*$)
) .
-任何單個字符 (?=.*\\\\.)
-后面跟有0個以上的字符.
字符串中的符號。 如果您不需要具有與原始字符串相同數目的字符(更匿名)的掩碼,該怎么辦:
(?<=^.)[^@]*|(?<=@.).*(?=\.[^.]+$)
例如,如果將匹配項替換為***
,則結果將是:
j***@e***.com
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.