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

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

if (isANumber){
    ..
}

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


当前回答

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

该方法通过使用展开操作符将字符串拆分为一个数组,然后使用every()方法测试数组中的所有元素(字符)是否都包含在数字'0123456789'的字符串中:

Const digits_only = string =>[…字符串]。Every (c => '0123456789'.includes(c)); console.log (digits_only (' 123 '));/ /正确的 console.log (digits_only (+ 123));/ /错误 console.log (digits_only (' -123 '));/ /错误 console.log (digits_only(' 123。'));/ /错误 console.log (digits_only (' .123 '));/ /错误 console.log (digits_only (123.0));/ /错误 console.log (digits_only (0.123));/ /错误 console.log (digits_only(“Hello, world !”);/ /错误

其他回答

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

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

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

以防你需要整数和浮点数在同一个验证

/^\d+\.\d+$|^\d+$/.test(val)

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

该方法通过使用展开操作符将字符串拆分为一个数组,然后使用every()方法测试数组中的所有元素(字符)是否都包含在数字'0123456789'的字符串中:

Const digits_only = string =>[…字符串]。Every (c => '0123456789'.includes(c)); console.log (digits_only (' 123 '));/ /正确的 console.log (digits_only (+ 123));/ /错误 console.log (digits_only (' -123 '));/ /错误 console.log (digits_only(' 123。'));/ /错误 console.log (digits_only (' .123 '));/ /错误 console.log (digits_only (123.0));/ /错误 console.log (digits_only (0.123));/ /错误 console.log (digits_only(“Hello, world !”);/ /错误