我需要一个正则表达式来匹配0到99之间的任何数字。可能不包含前导零,这意味着f.ex. 05是不允许的。没有前导零的数字的正则表达式
我知道如何匹配1-99,但不包括0。
我为1-99的正则表达式是
^[1-9][0-9]?$
我需要一个正则表达式来匹配0到99之间的任何数字。可能不包含前导零,这意味着f.ex. 05是不允许的。没有前导零的数字的正则表达式
我知道如何匹配1-99,但不包括0。
我为1-99的正则表达式是
^[1-9][0-9]?$
[...],但没有得到0包括在内。
只是在表达前面加0|...
:
^(0|[1-9][0-9]?)$
^^
^(0|[1-9][0-9]?)$
测试http://regexr.com?2uu31(各种样品含)
您必须添加一个0|
,但要注意的是,“或”(|
)中的正则表达式具有最低的优先级。 ^0|[1-9][0-9]?$
在现实中意味着(^0)|([1-9][0-9]?$)
(我们将忽略那个现在有两个捕获组)。所以它的意思是“字符串以0
开头”或“字符串以[1-9][0-9]?
结尾”。使用括号的替代方法是重复^$
,如^0$|^[1-9][0-9]?$
。
我尝试了一切,但没有这样做。:(为什么我需要外括号?我不明白。 – AGuyCalledGerald
@ Jan-FrederikCarl因为'|'没有优先级,所以没有括号,'^ 0 | [ 1-9] [0-9]?$ ==(?:^ 0)|(?:[1-9] [0-9]?$)'(其中'(?:)'是非捕获但是你想要的东西等于'(?:^ 0 $)|(?:^ [1-9] [0-9]?$)' – xanatos
这应该做的伎俩:
^(?:0|[1-9][0-9]?)$
不使用或操作员一个简单的回答让前面的数字可选:
^[1-9]?[0-9]$
较量0-99禁止前导零(01-09) 。
有很多方法可以做到这一点,但这里是另一种允许任何数量的长度没有前导零
0-99:
^(0|[1-9][0-9]{0,1})$
0-999(只是增加{0,}):
^(0|[1-9][0-9]{0,2})$
1-99:
^([1-9][0-9]{0,1})$
1-100:
^([1-9][0-9]{0,1}|100)$
世界上任何一个号码
^(0|[1-9][0-9]*)$
12至999
^(1[2-9]|[2-9][0-9]{1}|[1-9][0-9]{2})$
如果我想在12到999之间添加范围,那么正则表达式是什么? –
'^(1 [2-9] | [2-9] [0-9] {1} | [1-9] [0-9] {2})$' – Guish
试试这个它会帮助你
^([0-9]|[1-9][0-9])$
这曾经是一个最右边的,但你只是有你的可选参数'?'在第二位数字而不是前导数字。 –