4

我想验证一个输入字段。用户应输入至少 10 位数的电话号码。

所以我需要检查非法字符。最好检查一下输入是否为整数。

我想出了这个,但它不起作用(n 将是字符串)。

function isInt(n){
    return typeof n== 'number' && n%1==0;
}

有任何想法吗?

4

5 回答 5

12

你可以做这样的测试:

input.length >= 10 && /^[0-9]+$/.test(input)

如果字符串中有非数字或字符串长度小于 10 个字符,则会失败

于 2011-01-14T14:12:26.547 回答
3

这应该有效((input - 0)自动尝试将值转换为数字):

function isInt(input){
   return ((input - 0) == input && input % 1==0);
}

已经有一个关于这个问题的问题:Validate decimal numbers in JavaScript - IsNumeric()

于 2011-01-14T14:21:16.193 回答
1

对你来说可能有点矫枉过正,但谷歌不久前还宣布了一个用于电话验证的库。提供 Java 和 Javascript 变体。

于 2011-01-14T14:12:38.190 回答
1

验证电话号码比检查输入是否为整数要复杂一些。例如,电话号码可以并且确实以零开头,因此从技术上讲它不是整数。用户也可以输入破折号:例如:

00 34 922-123-456

因此,对于验证它,您有几个选择:

  • 使用正则表达式来验证,看看:

    http://regexlib.com/

    该站点将有数百个示例

  • 使用循环依次检查每个字符,即是字符 int 还是 dash

我会推荐前者,因为后者取决于用户的一致输入,而你不会得到那个

于 2011-01-14T14:38:35.890 回答
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 
于 2014-04-19T10:24:27.653 回答