我需要编写一个应该检查字符的正则表达式,并且应该是唯一的例子。例如,要检查“@”的1次出现,我想出了@{1}
虽然我已经指定@应该只出现一次,但它匹配一次或多次。这个正则表达式有什么问题?
答案 0 :(得分:3)
你的正则表达式只检查连续1 @
。如果你想确保同一个字符串中没有其他@
,你可以使用否定的类和锚点:
^[^@]*@[^@]*$
(假设多行标志已关闭,否则,您将分别使用\A
和\z
作为行锚点的起点和终点。)
注意事项:{1}
是多余的,因为@
相当于@{1}
答案 1 :(得分:1)
要仅匹配一个,请使用两个负向预测:
^(?!.*@.*@).*@.*$