【问题标题】:Javascript - check if string can be converted to integer?Javascript - 检查字符串是否可以转换为整数?
【发布时间】:2016-10-07 01:02:40
【问题描述】:

如何简单检查字符串是否可以转换为整数?

我的意思只是整数,所以像'10.1' 这样的字符串不会被转换为10

例如,如果我这样做:

parseInt('10.1', 10)

返回 10

有没有类似 Python 的东西,所以我不需要做很多检查?

在 Python 中,如果我执行 int('10.1'),它会给我错误,但如果字符串实际上是整数,那么它只会让你像 int('10') 一样转换它。因此,即使不使用正则表达式或一些额外的检查,也很容易检查。

我试过了:

    function isInteger (value) {
        if ($.isNumeric(value) && Number(value) % 1 === 0){
            return true;
        } else {
            return false;
        }
    }

它有点工作,但如果我写例如10.,它将返回true,因为Number 转换为10。我想我需要使用正则表达式来检查这样的事情?

附:我搜索了这个问题,但所有答案似乎都含糊不清,实际上并没有回答如何正确检查整数(不仅仅是数字)。

【问题讨论】:

标签: javascript jquery integer


【解决方案1】:

您可以使用正则表达式来检测它是否匹配任何值。

function isInterger(value) {
     if (value.match(/^\d+$/) {
        return true;
   } else {
        return false;
   }
}

https://regex101.com/r/lE5tK1/1

【讨论】:

  • 但我特别说,我需要检查整数,而不是任何数字。
  • 这匹配任何包含数字的字符串,例如“100foo”或“csdvsd7”将匹配
  • 是的,我改了! ;)
【解决方案2】:

如果我正确理解了您的问题,那么应该这样做:

function isInteger(value) {
  if(parseInt(value,10).toString()===value) {
    return true
  }
  return false;
}

它将字符串转换为整数,然后再转换回字符串并将其与原始字符串进行比较。如果它们匹配,则返回 true,否则返回 false。

【讨论】:

  • @PeeHaa 我明白了,但这就是我所需要的,因为我只需要对像 '123' 这样的字符串是真的,并且如果它包含任何非整数符号(即使它代表十六进制),它应该是假的。我想更具体的方法是使用parseInt(val, 10),以表明我只关心小数。
  • 您需要什么? JS vms的不同实现不同的回报?
  • 为什么不需要它?请赐教好吗?该页面清楚地告诉我们,当不定义基数时,不同的实现基本上只是做一些事情,更糟糕的是可能/可能会做一些与其他人不同的事情。
  • 只要传入的是十进制格式的字符串,那么parseInt将默认为10的基数。只有早于 Ecmascript 5(从 2009 年之前!)的 JavaScript 可能会出现问题,然后只有领先的 0。我同意它更安全,但不一定是必要的。
【解决方案3】:

【讨论】:

    【解决方案4】:

    一种可能性是使用正则表达式进行测试,如下所示:

    function isInteger(value) {
      return /^\d+$/.test(value);
    }
    

    【讨论】:

    • ^开始到$结束+每个字符都应该是一个\d数字,对吧?
    • @Walter 没错
    • 注意科学记数法。
    猜你喜欢
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 2010-12-28
    • 2010-10-18
    • 1970-01-01
    • 2014-07-09
    相关资源
    最近更新 更多