我想检查 a 是否string
只包含数字。我用过这个:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
但意识到它也允许+
和-
。基本上,我想确保 aninput
只包含数字而不包含其他字符。由于+100
和-5
都是数字,isNaN()
因此不是正确的方法。也许正则表达式是我需要的?有小费吗?
我想检查 a 是否string
只包含数字。我用过这个:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
但意识到它也允许+
和-
。基本上,我想确保 aninput
只包含数字而不包含其他字符。由于+100
和-5
都是数字,isNaN()
因此不是正确的方法。也许正则表达式是我需要的?有小费吗?
怎么样
let isnum = /^\d+$/.test(val);
string.match(/^[0-9]+$/) != null;
String.prototype.isNumber = function(){return /^\d+$/.test(this);}
console.log("123123".isNumber()); // outputs true
console.log("+12".isNumber()); // outputs false
如果您甚至想支持浮点值(点分隔值),那么您可以使用以下表达式:
var isNumber = /^\d+\.\d+$/.test(value);
这是检查字符串是否仅包含数字的另一种有趣且易读的方法。
此方法的工作原理是使用扩展运算符将字符串拆分为数组,然后使用该every()
方法测试数组中的所有元素(字符)是否都包含在数字字符串中'0123456789'
:
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