数字的正则表达式,不带前导零

时间:2011-10-13 12:17:53

标签: regex

我需要一个正则表达式来匹配0到99之间的任何数字。可能不包括前导零,这意味着f.ex. 05是不允许的。

我知道如何匹配1-99,但不包含0。

我1-99的正则表达式是

^[1-9][0-9]?$

10 个答案:

答案 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$

测试:

https://regex101.com/r/Tpe9Ia/1

答案 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\.]+).*

这个表达式将有助于十进制数