正则表达式帮助特定的char

时间:2011-01-19 19:50:33

标签: regex

我最近得到了一个问题的答案: Consecutive Regex

但是现在我只想在那里有@符号时匹配。

原始正则表达式是:

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

所以我试过了:

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

但这不允许我的任何特殊字符跟随@符号。

例如,以上匹配+foo.bar+-test+@m但不匹配+foo.bar+-test+@m+

我在这里做错了什么想法?

2 个答案:

答案 0 :(得分:0)

^(?!.*([._%+-])\1)(?=.*@)[\w.%+@-]+$

答案 1 :(得分:0)

您已重新使用反向引用\1,因此它会阻止您再次匹配“特殊”字符。您根本不需要重复前瞻断言。试试

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