簡體   English   中英

電子郵件屏蔽的正則表達式

[英]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.comf*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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM