正则表达式只匹配整数

Regex Match Integer Only

我目前使用的模式是:\b\d+\b,用这些条目测试它:

1
2
3
4
5
numb3r
2
3454
3.214
test

我只想赶上2号和3454号。它对于捕捉数字字非常有用,除了边界标志(\b)"."作为一个单独的单词来考虑。我试着把这段时间排除在外,但写这个模式有困难。

基本上,我想删除整型单词,只删除它们。


您只需要下面的regex:

1
^\d+$


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

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

编辑

如果你不想让0在前面(023无效),你可以这样写:

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

编辑2

正如@dmitriylezhnev指出的那样,如果您想让数字0本身有效,但在其他数字前面仍然无效(例如:0有效,但023无效)。然后你可以用

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


如果您只想匹配空格,则可以使用lookaround:

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


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

它匹配正数、负数和零。

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

在线测试可从http://rubular.com/r/flnxvl6soq获得。


我会在其他好答案中加上一句话作为评论,但我需要更多的声誉。如有必要,一定要考虑科学记数法,即3e4=30000。这是许多语言中的默认行为。我发现以下regex可以工作:

1
2
3
4
5
/^[-+]?\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

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

将接受前导"+"、前导"-"和前导"0"的数字


这只允许正整数。

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

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


在我的例子中,我需要的正整数和负整数不应该包括像01258这样的零起始数,但当然应该包括0。

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

有效值示例:"3""- 3","0""- 555","945465464654"

无效值示例:"0""1""0.7""690.7""0.0001""A",""""-""001""0.2""0.5""3","3。""- 1","+ 100","——1","- 1","- 0","00099""099"