我想验证一个输入字段。用户应该输入至少10位数字的电话号码。
因此,我需要检查非法字符。最好只检查输入是否为整数。
我想到了以下代码,但它不起作用(n将是字符串)。
function isInt(n){
return typeof n== 'number' && n%1==0;
}
有什么想法吗?
我想验证一个输入字段。用户应该输入至少10位数字的电话号码。
因此,我需要检查非法字符。最好只检查输入是否为整数。
我想到了以下代码,但它不起作用(n将是字符串)。
function isInt(n){
return typeof n== 'number' && n%1==0;
}
你可以像这样进行一次测试:
input.length >= 10 && /^[0-9]+$/.test(input)
如果字符串中包含非数字字符或者字符串长度小于10个字符,则会导致失败。
^[0-9]{10,}$
就足够了。 - darioo这应该可以工作((input - 0)
会自动尝试将值转换为数字):
function isInt(input){
return ((input - 0) == input && input % 1==0);
}
已经有一个关于这个问题的SO问答: 在JavaScript中验证十进制数-IsNumeric()
验证电话号码比检查输入是否为整数要复杂一些。例如,电话号码可以以零开头,因此它不是技术上的整数。此外,用户可能会输入破折号:例如:
00 34 922-123-456
所以,关于验证它,您有几个选项:
使用正则表达式进行验证,请查看:
这个网站将有数百个示例
使用循环逐个检查每个字符,即字符是否为整数或破折号
我建议使用前者,因为后者取决于用户的一致输入,而您不会得到那样的输入。
return (+val === ~~val && null !== val);
这是 JavaScript 控制台的输出。> +"foobar" === ~~"foobar"
false
> +1.6 === ~~1.6
false
> +'-1' === ~~'-1'
true
> +'-1.56' === ~~'-1.56'
false
> +1 === ~~1
true
> +-1 === ~~-1
true
> +null === ~~null // this is why we need the "&& null !== val" in our return call
true