正则表达式只匹配整数

时间:2012-01-28 06:54:02

标签: regex

我目前正在使用模式:\b\d+\b,使用以下条目对其进行测试:

numb3r 
2
3454 
3.214
test

我只希望它能够捕获2和3454.除了边界标志(\b)包括"."作为单独的单词之外,它非常适合捕获数字。我试着排除这个时期,但是在写这个模式时遇到了麻烦。

基本上我想删除整数单词,只是单独使用它们。

10 个答案:

答案 0 :(得分:76)

您想要的只是以下正则表达式:

^\d+$

答案 1 :(得分:40)

与manojlds类似,但包括可选的负数/正数:

var regex = /^[-+]?\d+$/;

修改

如果您不想在前面允许零(023变为无效),您可以这样写:

var regex = /^[-+]?[1-9]\d*$/;

编辑2

正如@DmitriyLezhnev指出的那样,如果你想允许数字0本身有效,但在其他数字前面仍然无效(例如:0有效,但{{1} }} 是无效的)。然后你可以使用

023

答案 2 :(得分:26)

如果您要匹配的只是空格,则可以使用环视:

(?<=\s|^)\d+(?=\s|$)

答案 3 :(得分:2)

此解决方案匹配整数:

  • 负整数匹配(-1,-2等)
  • 单个零匹配(0)
  • 负零不是(-0,-01,-02)
  • 空空格不匹配('')
/^(0|-*[1-9]+[0-9]*)$/

答案 4 :(得分:1)

^([+-]?[0-9]\d*|0)$

将接受前导“+”的数字,前导“ - ”和引导“0”

答案 5 :(得分:1)

我会将其添加为其他好的答案的注释,但这样做需要更多的声誉。如有必要,请确保使用科学计数法,即3e4 =30000。这是许多语言的默认行为。我发现以下正则表达式可以正常工作:

/^[-+]?\d+([Ee][+-]?\d+)?$/;
//          ^^              If 'e' is present to denote exp notation, get it
//             ^^^^^          along with optional sign of exponent
//                  ^^^       and the exponent itself
//        ^            ^^     The entire exponent expression is optional

答案 6 :(得分:1)

尝试/^(?:-?[1-9]\d*$)|(?:^0)$/

它匹配正数,负数以及零。

它与00-0+0-00+0001等输入不匹配。

可以在http://rubular.com/r/FlnXVL6SOq

进行在线测试

答案 7 :(得分:0)

这适用于我的情况,我需要正负整数,不应包括零起始数字,如01258,但当然应包括0

^(-?[1-9]+\d*)$|^0$

有效值的示例: “3” “-3”, “0”, “-555” “945465464654”

无效值的示例: “0.0”, “1.0”, “0.7”, “690.7”, “0.0001”, “一个”, “” “”, “”, “ - ”, “001”, “00.2”, “000.5”, 。” 3" “3”, “-1”, “+100”, “--1” “-.1” “-0”, “00099”, “099”

答案 8 :(得分:0)

^( - +)?[1-9] [0-9] * $ 以 - 或+开始0或1次,然后你想要一个非零数字(因为没有这样的东西-0或+0)然后它继续从0到9的任何数字

答案 9 :(得分:0)

这只允许使用正整数。

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