RegEx为长度为0-2的字符串

时间:2011-02-17 21:35:09

标签: regex

我正在尝试匹配一个字符串,该字符串可以为空或者包含1或2个数字,如下所示:

“”(空) “1” “23”

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

[0-9] {0,2}

我读到的是“数字0到9出现0到2次”。但是,实际上我发现正则表达式也匹配更长的字符串,如“333”。如何在正则表达式中限制字符串长度?

3 个答案:

答案 0 :(得分:46)

使用以下正则表达式:

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

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

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

  

[Anchors]根本不匹配任何角色。相反,它们匹配字符之前,之后或之间的位置。它们可用于在正确的位置“锚定”正则表达式匹配。

答案 1 :(得分:7)

你需要anchor正则表达式:

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

否则正则表达式将很乐意匹配子串。

答案 2 :(得分:6)

使用元字符作为字符串的开头和结尾:

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

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