js 判断字符串是否全是数字
可能也有小数点
var test = ['123.12', '.123', '123.', '123a'];
var reg = /^[\d|\.]*$/;
test.forEach((v) => {
console.log(v, reg.test(v));
});
除了正则,isNaN或许更好。
var test = ['123.12', '.123', '123.', '123a', '1e+43'];
test.forEach((v) => {
console.log(v, !isNaN(v));
});
简单总结一下,判断一个给定的number类型或者string类型表示的数是否合法有效,可以使用!isNaN
或者正则表达式
来处理。
示例:对于给定的的各种类型的数字表示(主要包含整数、小数、科学计数以及对应的正负数表示)如下。
var numbers = [
123, +123, -123,
'123', '+123', '-123',
123.4, +123.4, -123.4,
'123.4', '+123.4', '-123.4',
123., +123., -123.,
'123.', '+123.', '-123.',
.123,, +.123, -.123,
'.123', '+.123', '-.123',
1.23e+20, +1.23e+20, -1.23e+20,
'1.23e+20', '+1.23e+20', '-1.23e+20',
'123.4.5',
'123abc456',
undefined
];
1、使用!isNaN
来进行判定。
numbers.forEach((v) => {
console.log(typeof(v), "\t", v, "\t", !isNaN(v));
});
结果如下:
number 123 true
number 123 true
number -123 true
string 123 true
string +123 true
string -123 true
number 123.4 true
number 123.4 true
number -123.4 true
string 123.4 true
string +123.4 true
string -123.4 true
number 123 true
number 123 true
number -123 true
string 123. true
string +123. true
string -123. true
number 0.123 true
number 0.123 true
number -0.123 true
string .123 true
string +.123 true
string -.123 true
number 123000000000000000000 true
number 123000000000000000000 true
number -123000000000000000000 true
string 1.23e+20 true
string +1.23e+20 true
string -1.23e+20 true
string 123.4.5 false
string 123abc456 false
undefined undefined false
2、使用正则表达式来进行判定:整数,不带符号
var reg = /^[\d]+$/;
numbers.forEach((v) => {
console.log(typeof(v), "\t", v, "\t", reg.test(v));
});
结果如下:
number 123 true
number 123 true
number -123 false
string 123 true
string +123 false
string -123 false
number 123.4 false
number 123.4 false
number -123.4 false
string 123.4 false
string +123.4 false
string -123.4 false
number 123 true
number 123 true
number -123 false
string 123. false
string +123. false
string -123. false
number 0.123 false
number 0.123 false
number -0.123 false
string .123 false
string +.123 false
string -.123 false
number 123000000000000000000 true
number 123000000000000000000 true
number -123000000000000000000 false
string 1.23e+20 false
string +1.23e+20 false
string -1.23e+20 false
string 123.4.5 false
string 123abc456 false
undefined undefined false
3、使用正则表达式来进行判定:整数 + 小数 + 科学计数,带符号
var reg = /^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/;
numbers.forEach((v) => {
console.log(typeof(v), "\t", v, "\t", reg.test(v));
});
结果如下:
number 123 true
number 123 true
number -123 true
string 123 true
string +123 true
string -123 true
number 123.4 true
number 123.4 true
number -123.4 true
string 123.4 true
string +123.4 true
string -123.4 true
number 123 true
number 123 true
number -123 true
string 123. true
string +123. true
string -123. true
number 0.123 true
number 0.123 true
number -0.123 true
string .123 true
string +.123 true
string -.123 true
number 123000000000000000000 true
number 123000000000000000000 true
number -123000000000000000000 true
string 1.23e+20 true
string +1.23e+20 true
string -1.23e+20 true
string 123.4.5 false
string 123abc456 false
undefined undefined false
- 对于number类型的数,会将诸如:.123、123.、+123表示的数转换为标准化的表示:123,之后再进行进一步的处理。
- 对于number类型的数,如果是科学计数法表示,则会将其展开后再进行进一步的处理。
楼上除了 正则,也可以用另外一种
var str = '1311ww,ww';
var str2 = '11111'
function isAllNaN(str) {
for (var i = 0; i < str.length; i++) {
if(isNaN(str.charAt(i))) {
return '不都是整数'
}
}
return '都是整数'
}
alert(isAllNaN(str))
alert(isAllNaN(str2))
不好意思哈,没测试,现在可以了, 小数点也是可以的
const is_numeric = (value) => {
if (typeof(value) === 'object') {
return false;
} else {
return !Number.isNaN(Number(value));
}
};
is_numeric({}); //false
is_numeric([]); //false
is_numeric('poi'); //false
is_numeric('1'); //true
is_numeric('1.214'); //true
10 回答11.6k 阅读
2 回答3.1k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
3 回答806 阅读✓ 已解决