javascript - 通过 Regex 仅检查整数值

标签 javascript regex

我的代码:

我试过下面的代码

<SCRIPT type="text/javascript"> 

var num = "10";
var expRegex = /^\d+$/;

if(expRegex.test(num)) 
{
   alert('Integer');
}
else
{
   alert('Not an Integer');
}

</SCRIPT>

我得到的结果是 Integer。实际上我用双引号声明了 num 变量。显然它被认为是一个字符串。实际上我需要得到 Not an Integer 的结果。如何更改 RegEx 以便我可以获得预期的结果。

在这种情况下,它应该给出 Not an Integer 的结果。但我得到的是 Integer

最佳答案

if(typeof num === "number" &&
   Math.floor(num) === num)
    alert('Integer');
else
    alert('Not an Integer');

正则表达式可以处理字符串。因此,如果您尝试使用字符串以外的其他内容,则字符串要么被转换,要么会出现错误。而你的返回 true,因为显然该字符串只包含数字字符(这就是你要检查的内容)。

改用typeof 运算符。但是 JavaScript 没有专门用于 intfloat 的类型。所以你必须自己做整数检查。如果 floor 没有改变值,那么你有一个整数。

还有一个警告。 Infinity 是一个 number 并且调用 Math.floor() 会再次导致 Infinity,所以你得到那里的误报。你可以这样改变它:

if(typeof num === "number" &&
   isFinite(num) &&
   Math.floor(num) === num)
    ...

看到你的正则表达式你可能只想接受正整数:

if(typeof num === "number" &&
   isFinite(num) &&
   Math.floor(Math.abs(num)) === num)
    ...

关于javascript - 通过 Regex 仅检查整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13765134/

相关文章:

javascript - 删除多个数据库,仅注册一个云函数

PowerShell Lookbehind 的 RegX 代码在 IP 寻址上无法匹配

java - 在正则表达式中匹配末尾带有句点的单词

Bash 脚本中的正则表达式

javascript - 对于向上和向下箭头键的多个 ng-repeats,如何激活类等于 true?

javascript - 通过循环名称选择器获取输入值

javascript - 正则表达式 - 从字符串中捕获重复字符

python - 如何根据文本中的关键字将一个html页面拆分为多个html

php - 如何检查用户当前是否已登录并正在玩 Facebook 应用游戏

javascript - Hammer.js - 无延迟地支持单击和双击