2014-03-13 43 views

回答

0

我只注意到您使用的崇高文本。您可以輕鬆地做到:

  • 查找(.*)(....)(@.*)
  • 更換$1xxxx$3

注:僅更換有至少4個字符的電子郵件,並讓別人不變。


C++11,你可以使用:

if (s.substr(0, s.find('@')).size() >= 4) // only handle email with >= 4 chars 
{ 
    const regex r("(.*)(....)(@.*)"); 
    const string fmt("$1xxxx$3"); 

    string res = regex_replace(s, r, fmt); 
} 

親身體驗:http://rextester.com/EJV24903

+0

要小心!如果電子郵件的第一部分短於4個字符(它發生!)它將完全可見 –

+0

@OlivierDulac感謝您指出這一點。更新了提到這個的答案。 – herohuyongtao

0

Java

正則表達式是[\w.!#$%&'*+=?^{}|~\/-]{4}([email protected])

電子郵件接受字符作爲每http://en.wikipedia.org/wiki/Email_address

入住這裏演示

http://regex101.com/r/kZ2fE5

CODE:

String test = "[email protected]"; 
test  = test.replace("[\\w.!#$%&'*+=?^`{}|~\\/-]{4}([email protected])","xxxx"); 
System.out.println(test) 

當電子郵件少於4個字符,沒有替換髮生

+0

正則表達式可以簡化爲[\ w] {4}(?= @) – pezetem

+0

@akfaz:不,它不能被簡化。電子郵件地址也可能包含「數字」 –

+0

是的您是對的,但請記住\ w已經包含數字「匹配字母數字字符,包括」_「; 與ASCII中的[A-Za-z0-9_]相同。 「 http://en.wikipedia.org/wiki/Regular_expression – pezetem

1

此模式應該工作:

[搜索]

.{1,4}(?=\@.*?) 

[更換]

xxxx 
相關問題