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

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

if (isANumber){
    ..
}

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


当前回答

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

const  isdigit=(value)=>{
    const val=Number(value)?true:false
    console.log(val);
    return val
}

isdigit("10")//true
isdigit("any String")//false

其他回答

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

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

如何

let isnum = /^\d+$/.test(val);

如果你使用jQuery:

$.isNumeric('1234'); // true
$.isNumeric('1ab4'); // false

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

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