长度为0-2的字符串的正则表达式

41

我试图匹配一个字符串,它可以为空或包含1或2个数字,例如以下内容:

""(空) "1" "23"

具有更多数字或非数字字符的字符串不应匹配。 我最接近的猜测是正则表达式:

[0-9]{0,2}

我理解它的意思是“出现0到2次的数字0到9。” 但是在实践中,我发现该正则表达式也匹配较长的字符串,例如“333”。如何在正则表达式中限制字符串长度?

3个回答

77

使用以下正则表达式:

^[0-9]{0,2}$
你的方法基本正确,^$字符是锚点,分别匹配字符串的开头和结尾。
关于锚点的更深入讨论,请参见这里

锚点不会匹配任何字符,而是匹配字符前、后或之间的位置。它们可以用来在某个位置上“锚定”正则表达式匹配。


我在测试中因为逗号和第二个范围数字之间的空格而得到了假值... - Mamrezo

9

您需要锚定正则表达式:anchor

^[0-9]{0,2}$

否则,正则表达式会愉快地匹配子字符串。

6
使用元字符来匹配字符串的开头和结尾:
^[0-9]{0,2}$

如果您不使用它们,它将匹配字符串中的任何位置,“12”是“123”的一部分且可以匹配。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接