Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查字符串是否为正整数,允许0和all-0小数_Javascript_Regex - Fatal编程技术网

Javascript 如何检查字符串是否为正整数,允许0和all-0小数

Javascript 如何检查字符串是否为正整数,允许0和all-0小数,javascript,regex,Javascript,Regex,因此,为了检查字符串是否为正整数,我做了一些研究,在这里有人找到了这个解决方案: 然而,我将其用于测试,发现小数点后纯0的数字似乎不起作用。例如: 15==>有效 15.0=>不起作用:( 15.000=>不起作用:( 在现有方法的基础上,我如何允许小数点后的纯0并使其全部工作?请注意15.38不应该工作,但15.00应该工作。此处无需使用正则表达式 function isNormalInteger(str) { var n = parseInt(str); return n &g

因此,为了检查字符串是否为正整数,我做了一些研究,在这里有人找到了这个解决方案:

然而,我将其用于测试,发现小数点后纯0的数字似乎不起作用。例如:

15==>有效

15.0=>不起作用:(

15.000=>不起作用:(


在现有方法的基础上,我如何允许小数点后的纯0并使其全部工作?请注意15.38不应该工作,但15.00应该工作。

此处无需使用正则表达式

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

这里不需要使用正则表达式

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
又快又脏

function isNormalInteger(str) {
    var ival=parseInt(str);
    return ival!=NaN && ival>=0 && ival==parseFloat(str);
}
又快又脏

function isNormalInteger(str) {
    var ival=parseInt(str);
    return ival!=NaN && ival>=0 && ival==parseFloat(str);
}

首先,函数应调用
isNormalNumber
而不是
isNormalInteger
,因为它接受小数,然后这就是您需要的正则表达式:

函数isNormalNumber(str){
返回/^\+*[0-9]\d*(\.0+)$/.test(str);
}

警报(isNormalNumber(“+10.0”)+”::“+isNormalNumber(“+10.9”)+”::“+isNormalNumber(“+10”);
首先应调用函数
isNormalNumber
,而不是
isNormalInteger
,因为它接受小数,那么这就是您需要的正则表达式:

函数isNormalNumber(str){
返回/^\+*[0-9]\d*(\.0+)$/.test(str);
}


警告(isNormalNumber(“+10.0”)+”::“+isNormalNumber(“+10.9”)+”::“+isNormalNumber(“+10”);
整数没有小数位数,
15.0
不是整数,这就是为什么它在“测试”时不起作用的原因。是的,最好不要使用前导“+”签名,允许纯0在小数点处。到目前为止,我最好的解决方案是^[0-9]\d*(\.0+)*$,这似乎是正确的吗?谢谢。@Anubhava你检查了我下面的答案了吗?它是否已经匹配了所有条件?整数没有小数点,
15.0
不是整数,这就是为什么当“进行测试”。最好是。我不希望有前导“+”符号,允许小数点后纯0。到目前为止,我最好的解决方案是^[0-9]\d*(\.0+)*$,这似乎是正确的吗?谢谢。@Anubhava你检查了我下面的答案了吗?它不是已经符合你的所有条件了吗?嗨,chsdk,正则表达式很好,但是我怎么能允许0或0.00等呢?我试过了/^\+*[0-9]\d*(\.0+*$/这是正确的吗?是[0-9]一个有效的范围?@chsdkYep就像一个符咒,为了消除前导“+”的选项,我刚刚删除了\+*correct?@chsdkIt matches
0
,它不是一个正整数,它也匹配
0.0.0
,它不是一个偶数。很好的捕获!谢谢!实际上0很好,对于0.0.0.0,我使用了^[0-9]\d*(\.0+)?$现在它似乎运行良好,我将*改为?,这是一种正确的方法吗?@anubhavaCorrect方法在没有任何正则表达式的情况下使用,正如我在下面所示,但是对于正则表达式
/^\d+(?:\.0+)?$/
对您来说很好。您好chsdk,正则表达式很好,但是我怎么能允许0或0.00等呢?我尝试了/^\+*[0-9]\d*(\.0+*)/这是正确的吗?是[0-9]一个有效的范围?@chsdkYep就像一个符咒,为了消除前导“+”的选项,我刚刚删除了\+*correct?@chsdkIt matches
0
,它不是一个正整数,它也匹配
0.0.0
,它不是一个偶数。很好的捕获!谢谢!实际上0很好,对于0.0.0.0,我使用了^[0-9]\d*(\.0+)?$现在它似乎运行良好,我将*改为?,这是一种正确的方法吗?@anubhavaCorrect方法在没有任何正则表达式的情况下使用,正如我在下面所示,但对于正则表达式
/^\d+(?:\.0+)?$/
您可以使用。实际上,这个解决方案可能会出现错误,因为
parseInt()
如果给定的字符串不是有效的数字,将给出
NaN
。不,没有错误。如果调用
isNormalInteger(“abc”)
它将正确返回
false
实际上,此解决方案可能会出现错误,因为
parseInt()
如果给定的字符串不是有效的数字,将给出
NaN
。不,没有错误。如果调用
isNormalInteger(“abc”)
它将正确返回
false
+++我宁愿使用这种方法,而不是使用正则表达式。+++我宁愿使用这种方法,而不是使用正则表达式。