2011-02-17 167 views
12

我试图匹配的字符串,可以是空的或有它的1个或2个数字,如以下:正则表达式的长度的字符串0-2

“”(空) “1 “ ”23“

具有更多数字或非数字字符的字符串不应匹配。我最接近的猜测是正则表达式: “数字0到9出现0至2次”

[0-9] {0,2}

这我读说然而,在实践中,我发现正则表达式也匹配较长的字符串,如“333”。如何限制正则表达式中的字符串长度?

+0

你使用什么语言? – Donut 2011-02-17 21:36:11

回答

36

使用以下正则表达式:

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

你几乎拥有它 - ^$字符分别匹配字符串的开头和结尾是,。

有关锚更深入的讨论,请参见here

[锚]没有任何字符都匹配。相反,它们匹配字符之前,之后或之间的位置。它们可以用来在正确的位置“锚定”正则表达式匹配。

5

使用元字符开始和结束字符串:

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

如果你不使用它们,它的任何地方匹配的字符串,而“12”,它相匹配,是“部分123" 。

6

您需要anchor正则表达式:

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

否则将正则表达式匹配愉快子。