检查字符串是不是为整数

Posted

技术标签:

【中文标题】检查字符串是不是为整数【英文标题】:Check string for integer检查字符串是否为整数 【发布时间】:2011-01-14 14:05:53 【问题描述】:

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

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

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

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

有什么想法吗?

【问题讨论】:

如果放入类似“555-1212 ext 323”的内容会怎样? smartwebby.com/Dhtml/phone_no_validation.asp 【参考方案1】:

你可以做一个这样的测试:

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

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

【讨论】:

+1 用于回答实际问题(尽管检查它是否已经是一个数字可能很好)。但正如 Diodeus 指出的那样,电话号码不是整数,以另一种方式引导 OP 会很好。 只使用正则表达式^[0-9]10,$就足够了 这是一个正则表达式方法,它返回一个布尔值,指示正则表达式是否通过。在此处查看更多信息:developer.mozilla.org/en/javascript/Reference/Global_Objects/…【参考方案2】:

这应该可以工作((input - 0) 自动尝试将值转换为数字):

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

00 34 922-123-456

所以,要验证它,您有几个选择:

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

http://regexlib.com/

这个网站会有数百个例子

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

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

【讨论】:

【参考方案5】:

为什么不使用:

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 

【讨论】:

我知道这是一个迟到的答案,但由于我一直在寻找这个,它不妨帮助其他人。

以上是关于检查字符串是不是为整数的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 2.x 中,是不是有办法检查字符串是不是可以转换为整数? [复制]

检查字符串是不是可以在 Python 中转换为浮点数

如何检查浮点值是不是为整数

如何检查字符串是不是为数字? [复制]

检查 varchar() 是不是为 int [重复]

如何检查字符串是不是能够转换为 float 或 int [重复]