我需要一个正则表达式来匹配0到99之间的任何数字。可能不包括前导零,这意味着f.ex. 05是不允许的。
我知道如何匹配1-99,但不包含0。
我1-99的正则表达式是
^[1-9][0-9]?$
答案 0 :(得分:20)
有很多方法可以做到这一点,但这里有一个允许任意数字长度而没有前导零的替代方法
0-99:
^(0|[1-9][0-9]{0,1})$
0-999(只需增加{0, 2 }):
^(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})$
答案 1 :(得分:12)
<强>更新强>
^([0-9]|[1-9][0-9])$
匹配0-99。与前导零的值不匹配。根据您的应用程序,您可能需要转义括号和符号。
答案 2 :(得分:3)
^(0|[1-9][0-9]?)$
在这里测试http://regexr.com?2uu31(包括各种样本)
您必须添加0|
,但请注意,Regexes中的“或”(|
)优先级最低。 ^0|[1-9][0-9]?$
实际上意味着(^0)|([1-9][0-9]?$)
(我们将忽略现在有两个捕获组)。所以它意味着“字符串以0
开头”或“字符串以[1-9][0-9]?
”结尾。使用括号的替代方法是重复^$
,例如^0$|^[1-9][0-9]?$
。
答案 3 :(得分:2)
[...]但不要包含0。
只需在表达式前添加0|...
:
^(0|[1-9][0-9]?)$
^^
答案 4 :(得分:1)
不使用or运算符的简单答案使得前导数字可选:
^[1-9]?[0-9]$
匹配0-99不允许前导零(01-09)。
答案 5 :(得分:0)
这应该可以解决问题:
^(?:0|[1-9][0-9]?)$
答案 6 :(得分:0)
试试这个会帮到你
^([0-9]|[1-9][0-9])$
答案 7 :(得分:0)
答案:
^([1-9])?(\d)$
说明:
^ // beginning of the string
([1-9])? // first group (optional) in range 1-9 (not zero here)
(\d) // second group matches any digit including 0
$ // end of the string
与(未分组)相同:
^[1-9]?\d$
测试:
答案 8 :(得分:0)
console.log(/^0(?! \d+$)/.test('0123')); // true
console.log(/^0(?! \d+$)/.test('10123')); // false
console.log(/^0(?! \d+$)/.test('00123')); // true
console.log(/^0(?! \d+$)/.test('088770123')); // true
怎么样?
答案 9 :(得分:-1)
([1-9][0-9]+).*
这将是简单而高效的 它将有助于处理任何范围的整数
([1-9][0-9\.]+).*
这个表达式将有助于十进制数