我想检查字符串是否只包含数字。我用了这个:

var isANumber = isNaN(theValue) === false;

if (isANumber){
    ..
}

但意识到它也允许+和-。基本上,我想确保输入只包含数字,没有其他字符。由于+100和-5都是数字,isNaN()不是正确的方法。 也许regexp就是我所需要的?任何建议吗?


当前回答

你可以使用下面的正则表达式:

^\d+$

其他回答

这就是你想要的

function isANumber(str){
  return !/\D/.test(str);
}

如果你想给。你可以试试下面的正则表达式。

/[^0-9.]/g

这里有一个不使用正则表达式的解决方案:

function onlyDigits(s) {
  for (let i = s.length - 1; i >= 0; i--) {
    const d = s.charCodeAt(i);
    if (d < 48 || d > 57) return false
  }
  return true
}

其中48和57分别是“0”和“9”的字符代码。

String.prototype.isNumber = function(){return /^\d+$/.test(this);}
console.log("123123".isNumber()); // outputs true
console.log("+12".isNumber()); // outputs false
function isNumeric(x) {
    return parseFloat(x).toString() === x.toString();
}

虽然这将返回false字符串的前导或末尾为0。