1.可能也有小數點
var test = ['123.12', '.123', '123.', '123a'];
var reg = /^[\d|\.]*$/;
test.forEach((v) => {
console.log(v, reg.test(v));
});
2. 除了正則,isNaN或許更好
var test = ['123.12', '.123', '123.', '123a', '1e+43'];
test.forEach((v) => {
console.log(v, !isNaN(v));
});
不要直接使用 isNaN()
function isNumber(value) {
return !Number.isNaN(Number(value))
}
3.對於給定的的各種類型的數字表示(主要包含整數、小數、科學計數以及對應的正負數表示)
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
];
3.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
3.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.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