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

Jam*_*add 17 regex

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

""(空)"1""23"

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

[0-9] {0,2}

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

Don*_*nut 50

使用以下正则表达式:

^[0-9]{0,2}$
Run Code Online (Sandbox Code Playgroud)

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

有关锚点的更深入讨论,请参见此处:

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


Tim*_*ker 7

你需要锚定正则表达式:

^[0-9]{0,2}$
Run Code Online (Sandbox Code Playgroud)

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


Tim*_*Tim 6

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

^[0-9]{0,2}$
Run Code Online (Sandbox Code Playgroud)

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