javascript,判断val是否为单个数字的最佳方式

时间:2010-10-01 23:24:55

标签: javascript regex digits

最好的方法来判断javascript中的值是否为单个数字。我一直在做类似

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

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

之一

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

7 个答案:

答案 0 :(得分:9)

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

对于regexp方法,需要这样的方法,以确保字符串包含一个数字:

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

请注意,我正在使用test方法,当您只想检查字符串是否与模式匹配时,建议使用test方法,内部function isDigit(val) { return String(+val).charAt(0) == val; } 方法将转换为sting参数。

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

{{1}}

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

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

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))

答案 3 :(得分:0)

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

if ((val >= 0) && (val < 10) && (Math.floor(val) == val)) {
    // ...
}

答案 4 :(得分:0)

这样的事情怎么样:

var check = parseFloat(val);
var isSingleDigit = (!isNaN(check) && (check < 10 && check > -10) && check.toString().length ==1);

答案 5 :(得分:0)

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

valAsString.match(/^\d$/)

答案 6 :(得分:0)

我认为

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

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

更清洁的解决方案

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

可轻松调整以包含其他类型的值。