检查字符串是否只包含数字

我想检查一个 "字符串 "是否只包含数字。我使用了这个方法。

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

if (isANumber){
    ..
}

但我发现它也允许 "+"和"-"。基本上,我想确保一个输入'只包含数字,没有其他字符。由于+100-5都是数字,isNaN()`不是正确的方法。 也许我需要的是一个regexp?有什么建议吗?

解决办法

怎么样

var isnum = /^\d+$/.test(val);
评论(7)
string.match(/^[0-9]+$/) != null;
评论(0)
String.prototype.isNumber = function(){return /^\d+$/.test(this);}
console.log("123123".isNumber()); // outputs true
console.log("+12".isNumber()); // outputs false
评论(2)

如果你想支持浮动值(点分隔值),那么你可以使用这个表达式。

var isNumber = /^\d+\.\d+$/.test(value);
评论(3)

这是你想要的

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

这里有另一种有趣的、可读的方法来检查一个字符串是否只包含数字。

这个方法的工作原理是使用[spread运算符][1]将字符串分割成一个数组,然后使用[every()][2]方法来测试数组中的所有元素(字符)是否[包含][3]在数字字符串'0123456789'中。

<!--开始片段。 js hide: false console: true babel.false --> -- begin snippet: js hide: false console: true false -->

const digits_only = string => [...string].every(c => '0123456789'.includes(c));

console.log(digits_only('123')); // true
console.log(digits_only('+123')); // false
console.log(digits_only('-123')); // false
console.log(digits_only('123.')); // false
console.log(digits_only('.123')); // false
console.log(digits_only('123.0')); // false
console.log(digits_only('0.123')); // false
console.log(digits_only('Hello, world!')); // false

[1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax [2]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every [3]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes

评论(2)

好吧,你可以使用下面的重合词。

^\d+$
评论(0)

下面是一个不使用正则表达式的解决方案。

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"。

评论(0)
function isNumeric(x) {
    return parseFloat(x).toString() === x.toString();
}

尽管这将会对带前导或尾部为零的字符串返回 "false"。

评论(0)
c="123".match(/\D/) == null #true
c="a12".match(/\D/) == null #false

如果一个字符串只包含数字,它将返回null。

评论(0)