仅匹配空格或字符串开头/结尾之间的整数的正则表达式

问题描述 投票:0回答:10

我目前正在使用该模式:

\b\d+\b
,使用以下条目对其进行测试:

numb3r 
2
3454 
3.214
test

我只希望它捕获 2 和 3454。它非常适合捕获数字单词,除了边界标志

(\b)
包括
"."
作为单独单词的考虑因素。我尝试排除句点,但在编写模式时遇到困难。

基本上我想删除整数单词,并且只删除它们。

regex
10个回答
119
投票

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

^\d+$

68
投票

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

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

编辑

如果你不想前面有零(

023
无效),可以这样写:

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

编辑2

正如@DmitriyLezhnev指出的,如果你想让数字

0
本身有效,但在其他数字前面仍然无效(例如:
0
有效,但
023
无效)。然后你就可以使用

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

43
投票

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

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

4
投票

我会将其添加为对其他好的答案的评论,但我需要更多的声誉才能这样做。如有必要,请务必允许使用科学记数法,即 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

4
投票

这只允许正整数。

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

3
投票

这个解匹配整数:

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

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

将接受带前导“+”、前导“-”和前导“0”的数字


1
投票

尝试

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

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

它与

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

在线测试可在 http://rubular.com/r/FlnXVL6SOq


0
投票

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


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”

© www.soinside.com 2019 - 2024. All rights reserved.