我想检查字符串是否只包含数字。我用了这个:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
但意识到它也允许+和-。基本上,我想确保输入只包含数字,没有其他字符。由于+100和-5都是数字,isNaN()不是正确的方法。 也许regexp就是我所需要的?任何建议吗?
我想检查字符串是否只包含数字。我用了这个:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
但意识到它也允许+和-。基本上,我想确保输入只包含数字,没有其他字符。由于+100和-5都是数字,isNaN()不是正确的方法。 也许regexp就是我所需要的?任何建议吗?
当前回答
string.match(/^[0-9]+$/) != null;
其他回答
如果你想支持浮点值(点分隔值),那么你可以使用这个表达式:
var isNumber = /^\d+\.\d+$/.test(value);
这就是你想要的
function isANumber(str){
return !/\D/.test(str);
}
如果你想包含浮点值,也可以使用下面的代码
theValue=$('#balanceinput').val();
var isnum1 = /^\d*\.?\d+$/.test(theValue);
var isnum2 = /^\d*\.?\d+$/.test(theValue.split("").reverse().join(""));
alert(isnum1+' '+isnum2);
这将只测试用'分隔的数字和数字。'第一个测试将涵盖诸如0.1和0等值,但也包括。1, 它不允许为0。所以我建议的解决方案是将value颠倒,这样。1将是1。那么相同的正则表达式将不允许它。
例子:
theValue=3.4; //isnum1=true , isnum2=true
theValue=.4; //isnum1=true , isnum2=false
theValue=3.; //isnum1=flase , isnum2=true
String.prototype.isNumber = function(){return /^\d+$/.test(this);}
console.log("123123".isNumber()); // outputs true
console.log("+12".isNumber()); // outputs false
c="123".match(/\D/) == null #true
c="a12".match(/\D/) == null #false
如果字符串只包含数字,它将返回null