正则表达式只匹配整数

Air*_* In 44 regex

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

numb3r 
2
3454 
3.214
test
Run Code Online (Sandbox Code Playgroud)

我只想要它捕获2和3454.它非常适合捕获数字,除了边界标志(\b)包括"."作为单独的单词的考虑.我试图排除这段时间,但是编写模式时遇到了麻烦.

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

man*_*lds 82

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

^\d+$
Run Code Online (Sandbox Code Playgroud)

  • 一直工作,直到你需要处理负数的整数. (19认同)
  • 这也将匹配前导零.我不希望你想要的. (8认同)

ghi*_*ing 47

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

var regex = /^[-+]?\d+$/;
Run Code Online (Sandbox Code Playgroud)

编辑

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

var regex = /^[-+]?[1-9]\d*$/;
Run Code Online (Sandbox Code Playgroud)

编辑2

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

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

  • 我改进它吧:`var regex =/^([+ - ]?[1-9]\d*| 0)$ /` (7认同)

Amb*_*ber 30

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

(?<=\s|^)\d+(?=\s|$)
Run Code Online (Sandbox Code Playgroud)

  • 要捕获负数,你可以添加[ - +]?也能抓住负数.正则表达式成为:(?<=\s | ^)[ - +]?\ d +(?=\s | $) (3认同)
  • 不适用于负数 (2认同)