我想检查一个string
是否只包含数字。 我使用了这个:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
但是我发现它还允许+
和 -
。基本上,我想确保一个input
只包含数字而没有其他字符。由于+100
和-5
都是数字,所以isNaN()
不是正确的方法。
也许正则表达式是我需要的?有什么建议吗?
我想检查一个string
是否只包含数字。 我使用了这个:
var isANumber = isNaN(theValue) === false;
if (isANumber){
..
}
但是我发现它还允许+
和 -
。基本上,我想确保一个input
只包含数字而没有其他字符。由于+100
和-5
都是数字,所以isNaN()
不是正确的方法。
也许正则表达式是我需要的?有什么建议吗?
怎么样?
let isnum = /^\d+$/.test(val);
string.match(/^[0-9]+$/) != null;
String.prototype.isNumber = function(){return /^\d+$/.test(this);}
console.log("123123".isNumber()); // outputs true
console.log("+12".isNumber()); // outputs false
isNumber = () => /^\d+$/.test(this);
并像这样使用:console.log(isNumber("123123));
。请注意,这不会改变原意。 - Nick Bullvar isNumber = /^\d+\.\d+$/.test(value);
\d+
改为\d*?
,它就能匹配0-9以及像.333这样的数字了。 - Gust van de Walvar isNumber = /^\d*\.?\d+$/.test(value)
-- 匹配 '3.5', '.5', '3' -- 不匹配 '3.' - Peter Hollingsworth-100.2
。 - dewey这里有一种有趣且易读的方法来检查一个字符串是否只包含数字。
这种方法通过使用展开运算符将字符串拆分为数组,然后使用every()
方法测试数组中的所有元素(字符)是否都包含在数字字符串'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
以下是一种不使用正则表达式的解决方案:
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"的字符编码。
This is what you want
function isANumber(str){
return !/\D/.test(str);
}
如果你需要同时进行整数和浮点数验证
/^\d+\.\d+$|^\d+$/.test(val)
function isNumeric(x) {
return parseFloat(x).toString() === x.toString();
}
false
。好的,您可以使用以下正则表达式:
^\d+$
\d
的实现方式可能不同,但是在 JavaScript 中,\d
恰好等价于[0-9]
。 - Ry-正则表达式
如何工作的文档:https://www.w3schools.com/js/js_regexp.asp - Danfoa/^\d*$/
来代替。请注意,该正则表达式用于匹配仅由数字组成的字符串。 - Константин Ван000000001
这样的东西也是正确的。 - Arian Faurtosh