我最近得到了一个问题的答案: 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+
我在这里做错了什么想法?
答案 0 :(得分:0)
^(?!.*([._%+-])\1)(?=.*@)[\w.%+@-]+$
答案 1 :(得分:0)
您已重新使用反向引用\1
,因此它会阻止您再次匹配“特殊”字符。您根本不需要重复前瞻断言。试试
(?!.*([._%+-])\1)[A-Za-z0-9._%+-]+@[A-Za-z0-9._%+-]+