2011-01-19 49 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._%+-]+