6

这是验证整数的解决方案。有人可以解释一下卡里姆回答的逻辑吗?
这完美地工作,但我无法理解如何。

var intRegex = /^\d+$/;
if(intRegex.test(someNumber)) {
   alert('I am an int');
   ...
}
4

4 回答 4

13

正则表达式:/^\d+$/

^ // beginning of the string
\d //  numeric char [0-9]
+ // 1 or more from the last
$ // ends of the string

当它们全部组合在一起时:

从字符串的开头到结尾有一个或多个数字 char[0-9] 和仅数字。

于 2013-06-05T13:37:30.813 回答
5

查看正则表达式参考:http ://www.javascriptkit.com/javatutors/redev2.shtml

/^\d+$/
^ : Start of string
\d : A number [0-9]
+ : 1 or more of the previous
$ : End of string
于 2013-06-05T13:37:30.153 回答
0

这个正则表达式可能更好/^[1-9]+\d*$/

^     // beginning of the string
[1-9] // numeric char [1-9]
+     // 1 or more occurrence of the prior
\d    // numeric char [0-9]
*     // 0 or more occurrences of the prior
$     // end of the string

还将针对预先用零填充的非负整数进行测试

于 2014-11-07T09:37:52.137 回答
0

什么是非负整数?

非负整数是“0 或正整数”。

来源: http: //mathworld.wolfram.com/NonnegativeInteger.html

换句话说,您正在寻找验证一个非负整数。

上面的答案是不充分的,因为它们不包括-0和之类的整数-0000,从技术上讲,它们在解析后会变成非负整数。其他答案也不验证+前面的整数。

您可以使用以下正则表达式进行验证:

/^(\+?\d+|-?0+)$/

在线尝试!

解释:

^                   # Beginning of String
    (               # Capturing Group
            \+?     # Optional '+' Sign
            \d+     # One or More Digits (0 - 9)
        |           # OR
            -?      # Optional '-' Sign
            0+      # One or More 0 Digits
    )               # End Capturing Group
$                   # End of String

以下测试用例返回真:-0, -0000, 0, 00000, +0, +0000, 1, 12345, +1, +1234. 以下测试用例返回 false:-12.3, 123.4, -1234, -1.

注意: 此正则表达式不适用于以科学记数法编写的整数字符串。

于 2018-02-27T01:45:54.393 回答