2011-01-19 17 views
0

我最近有一個問題的答案: Consecutive Regex正則表達式的幫助與特定的字符

但現在我只想如果有一個@符號在那裏匹配。

原正則表達式是:

(?!.*([._%+-])\1)[A-Za-z0-9._%+-]+ 

所以,我想:

(?!.*([._%+-])\1)[A-Za-z0-9._%+-][email protected](?!.*([._%+-])\1)[A-Za-z0-9._%+-]+ 

但是,這並不讓我的任何特殊字符的跟隨@符號。

例如,上述比賽[email protected]但不[email protected]+

的,我做錯了什麼在這裏的任何想法?

回答

0

您已經重新使用了反向引用\1,因此它會阻止您再次匹配「特殊」字符。根本不需要重複前瞻斷言。嘗試

(?!.*([._%+-])\1)[A-Za-z0-9._%+-][email protected][A-Za-z0-9._%+-]+