4

判断javascript中的值是否为一位数的最佳方法是什么。我一直在做类似的事情

var valAsString = '' + val;
if (valAsString.match(/\d/) {}

澄清:我的意思是 0,1,2,3,4,5,6,7,8,9 之一

另外,我应该有什么工作吗?我很惊讶人们为此想出了多少不同的方法。

4

7 回答 7

11

/\d/则表达式将匹配字符串中任意位置的数字,例如 in "foo1"will match "1"

对于正则表达式方法需要这样的东西,以确保字符串包含单个数字:

if (/^\d$/.test(val))  {
  //..
}

请注意,我正在使用该test方法,当您只想检查字符串是否与模式匹配时建议使用该方法,此外,该test方法在内部将转换为 sting 参数。

另一种简短的非正则表达式方法:

function isDigit(val) {
  return String(+val).charAt(0) == val;
}
于 2010-10-01T23:33:47.497 回答
3

嗯,检查它的字符串长度是否等于一?

if (typeof(val) === "number")
    {
    var valAsString = val.toString(10);
    if (valAsString.length === 1) {}
    }

不过,这不会接受负数或带有小数部分的数字。

于 2010-10-01T23:28:33.793 回答
2

如果您不想包含底片,这将起作用,您的解决方案也将起作用。

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))
于 2010-10-01T23:27:52.367 回答
0

假设这val已经是数字......

if ((val >= 0) && (val < 10) && (Math.floor(val) == val)) {
    // ...
}
于 2010-10-01T23:28:18.523 回答
0

像这样的东西怎么样:

var check = parseFloat(val);
var isSingleDigit = (!isNaN(check) && (check < 10 && check > -10) && check.toString().length ==1);
于 2010-10-01T23:28:24.153 回答
0

您可以使用正则表达式的以下修改:

valAsString.match(/^\d$/)

于 2010-10-01T23:39:59.247 回答
0

我认为

(+val + val % 1 + 10) % 10 === val

应该这样做,假设您只想接受 type 的值number

更清洁的解决方案是

typeof val === 'number' && val >>> 0 === val % 10

它可以很容易地适应包含其他类型的值。

于 2010-10-02T00:32:00.680 回答