因此,为了检查字符串是否为正整数,我做了一些研究,并在某处找到了这个解决方案: Validate that a string is a positive integer
function isNormalInteger(str) {
return /^\+?(0|[1-9]\d*)$/.test(str);
}
但是,我对此进行了测试,发现小数位上带有纯0的数字似乎不起作用。例如:
15 ===>作品!
15.0 ====>不起作用:(
15.000 ===>不起作用:(
在现有方法的基础上,如何在小数位上允许纯0并使它们全部工作?请注意15.38应该不起作用,但应该15.00。
答案 0 :(得分:3)
这里不需要使用正则表达式。
function isNormalInteger(str) {
var n = parseInt(str);
return n > 0 && n == +str;
}
然后测试一下:
isNormalInteger(15)
true
isNormalInteger(15.00)
true
isNormalInteger(15.38)
false
isNormalInteger(-15)
false
isNormalInteger(-15.1)
false
答案 1 :(得分:1)
快速而肮脏
function isNormalInteger(str) {
var ival=parseInt(str);
return ival!=NaN && ival>=0 && ival==parseFloat(str);
}
答案 2 :(得分:1)
首先,函数应该被称为isNormalNumber
而不是isNormalInteger
,因为它接受小数,那么这就是你需要的正则表达式:
function isNormalNumber(str) {
return /^\+*[0-9]\d*(\.0+)?$/.test(str);
}
alert(isNormalNumber("+10.0") + "::" + isNormalNumber("+10.9") + "::" + isNormalNumber("10"));

返回true::false:true
。
修改强>
这是一项编辑,可避免匹配数字001234
和07878
中的前导零:
^\+*[1-9]\d*(\.0+)?$|^0(\.0+)?$