判断javascript中的值是否为一位数的最佳方法是什么。我一直在做类似的事情
var valAsString = '' + val;
if (valAsString.match(/\d/) {}
澄清:我的意思是 0,1,2,3,4,5,6,7,8,9 之一
另外,我应该有什么工作吗?我很惊讶人们为此想出了多少不同的方法。
判断javascript中的值是否为一位数的最佳方法是什么。我一直在做类似的事情
var valAsString = '' + val;
if (valAsString.match(/\d/) {}
澄清:我的意思是 0,1,2,3,4,5,6,7,8,9 之一
另外,我应该有什么工作吗?我很惊讶人们为此想出了多少不同的方法。
正/\d/
则表达式将匹配字符串中任意位置的数字,例如 in "foo1"
will match "1"
。
对于正则表达式方法需要这样的东西,以确保字符串包含单个数字:
if (/^\d$/.test(val)) {
//..
}
请注意,我正在使用该test
方法,当您只想检查字符串是否与模式匹配时建议使用该方法,此外,该test
方法在内部将转换为 sting 参数。
另一种简短的非正则表达式方法:
function isDigit(val) {
return String(+val).charAt(0) == val;
}
嗯,检查它的字符串长度是否等于一?
if (typeof(val) === "number")
{
var valAsString = val.toString(10);
if (valAsString.length === 1) {}
}
不过,这不会接受负数或带有小数部分的数字。
如果您不想包含底片,这将起作用,您的解决方案也将起作用。
var valAsString = val.toString();
if (valAsString.length === 1) {}
您可以检查字符串是否介于 -10 和 10 之间(假设您想要包含负数)。这将是最快的,但不适用于非整数,因此最好避免。
如果您确实想包含负数,我可能会检查该数字是否为整数,那么我将使用以下内容:
var isSingleDigitIncludingNegatives = function( arg ) {
return ((typeof(myNum)=='number') && (myNum.toString().indexOf('.')==-1)) && (( -10 < arg ) && ( arg < 10))
假设这val
已经是数字......
if ((val >= 0) && (val < 10) && (Math.floor(val) == val)) {
// ...
}
像这样的东西怎么样:
var check = parseFloat(val);
var isSingleDigit = (!isNaN(check) && (check < 10 && check > -10) && check.toString().length ==1);
您可以使用正则表达式的以下修改:
valAsString.match(/^\d$/)
我认为
(+val + val % 1 + 10) % 10 === val
应该这样做,假设您只想接受 type 的值number
。
更清洁的解决方案是
typeof val === 'number' && val >>> 0 === val % 10
它可以很容易地适应包含其他类型的值。