正则表达式匹配一个匹配项

时间:2013-12-17 09:35:31

标签: regex

我需要编写一个应该检查字符的正则表达式,并且应该是唯一的例子。例如,要检查“@”的1次出现,我想出了@{1}

虽然我已经指定@应该只出现一次,但它匹配一次或多次。这个正则表达式有什么问题?

2 个答案:

答案 0 :(得分:3)

你的正则表达式只检查连续1 @。如果你想确保同一个字符串中没有其他@,你可以使用否定的类和锚点:

^[^@]*@[^@]*$

(假设多行标志已关闭,否则,您将分别使用\A\z作为行锚点的起点和终点。)

注意事项:{1}是多余的,因为@相当于@{1}

答案 1 :(得分:1)

要仅匹配一个,请使用两个负向预测:

^(?!.*@.*@).*@.*$