我想验证输入字段。用户应输入最小长度为10位的电话号码。
所以我需要检查非法字符。如果检查输入是否为整数,那将是很好的。
我想出了这个,但它不起作用(n就是字符串)。
function isInt(n){
return typeof n== 'number' && n%1==0;
}
有什么想法吗?
答案 0 :(得分:12)
你可以做这样的测试:
input.length >= 10 && /^[0-9]+$/.test(input)
如果字符串中有非数字或字符串长度小于10个字符
,则会失败答案 1 :(得分:3)
这应该有效((input - 0)
会自动尝试将值转换为数字):
function isInt(input){
return ((input - 0) == input && input % 1==0);
}
关于此问题已经存在SO问题:Validate decimal numbers in JavaScript - IsNumeric()
答案 2 :(得分:1)
可能对你来说太过分了,但谷歌不久前还宣布了library手机验证。可以使用Java和Javascript变体。
答案 3 :(得分:1)
验证电话号码比检查输入是否为整数要复杂一些。作为一个例子,电话号码可以并且确实以零开头,因此它不是技术上和整数。用户也可以输入破折号:例如:
00 34 922-123-456
因此,至于验证它,你有几个选择:
使用正则表达式进行验证,请查看:
这个网站将有数百个例子
使用循环依次检查每个字符,即字符为int或破折号
我会推荐前者,因为后者取决于用户的一致输入而你不会得到那个
答案 4 :(得分:0)
为什么不使用:
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