我正在尝试匹配一个字符串,该字符串可以为空或者包含1或2个数字,如下所示:
“”(空) “1” “23”
包含更多数字或非数字字符的字符串不应匹配。我最接近的猜测是正则表达式:
[0-9] {0,2}
我读到的是“数字0到9出现0到2次”。但是,实际上我发现正则表达式也匹配更长的字符串,如“333”。如何在正则表达式中限制字符串长度?
答案 0 :(得分:46)
使用以下正则表达式:
^[0-9]{0,2}$
你几乎拥有它 - ^
和$
字符 anchors 分别与字符串的开头和结尾匹配。
有关锚点的更深入讨论,请参阅here:
[Anchors]根本不匹配任何角色。相反,它们匹配字符之前,之后或之间的位置。它们可用于在正确的位置“锚定”正则表达式匹配。
答案 1 :(得分:7)
答案 2 :(得分:6)
使用元字符作为字符串的开头和结尾:
^[0-9]{0,2}$
如果你不使用它们,它匹配字符串中的任何地方,匹配的“12”是“123”的一部分。