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

时间:2009-11-22 15:24:22

标签: javascript numbers digits

我想检查string是否只包含数字。我用过这个:

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

if (isANumber){
    ..
}

但意识到它也允许+-。基本上,我想确保input只包含数字而不包含其他字符。由于+100-5都是数字,isNaN()不是正确的方法。 也许我需要一个正则表达式?有什么提示吗?

16 个答案:

答案 0 :(得分:490)

怎么样

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

答案 1 :(得分:51)

string.match(/^[0-9]+$/) != null;

答案 2 :(得分:17)

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

答案 3 :(得分:7)

如果您想要支持浮点值(点分隔值),那么您可以使用以下表达式:

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

答案 4 :(得分:5)

这就是你想要的

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

答案 5 :(得分:4)

这是检查字符串是否仅包含数字的另一种有趣且易读的方法。

此方法的工作方式是使用spread operator将字符串拆分为数组,然后使用every()方法测试字符串中数组are included中的所有元素(字符)是否'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

答案 6 :(得分:1)

好吧,你可以使用以下正则表达式:

^\d+$

答案 7 :(得分:1)

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

尽管这会在前导或尾随零的字符串上返回false

答案 8 :(得分:1)

如果要包含浮点值,也可以使用以下代码

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。所以我建议的解决方案是反转theValue,以使.1为1。然后相同的正则表达式将不允许它。

示例:

 theValue=3.4; //isnum1=true , isnum2=true 
theValue=.4; //isnum1=true , isnum2=false 
theValue=3.; //isnum1=flase , isnum2=true 

答案 9 :(得分:1)

它检查有效数字整数或浮点数或双精度数不是字符串

我使用的

正则表达式

简单的正则表达式

-1

高级正则表达式

 1. ^[0-9]*[.]?[0-9]*$

例如:仅数字

 2. ^-?[\d.]+(?:e-?\d+)?$    

允许

例如:123434

例如:.1232323

例如:12.3434434

不允许

例如:1122212.efsffasf

例如:2323fdf34434

例如:0.3232rf3333

高级正则表达式

///////////////////////////////////////////////// ////////////////////

int或float或指数字符串中所有类型的数字

var str='1232323';
var reg=/^[0-9]*[.]?[0-9]*$/;

console.log(reg.test(str))

例如:13123123

例如:12344.3232

例如:2323323e4

例如:0.232332

答案 10 :(得分:1)

如果您需要在相同的验证中使用整数和浮点数

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

答案 11 :(得分: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”的字符代码。

答案 12 :(得分:0)

如果您使用jQuery:

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

答案 13 :(得分:0)

var str='1232323a.1';
var reg=/^[0-9]*[.]?[0-9]*$/;

console.log(reg.test(str))

答案 14 :(得分:0)

这是不使用正则表达式的解决方案

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

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

答案 15 :(得分:-1)

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

如果字符串仅包含数字,则将返回null