检查字符串是否以范围内的数字开头

时间:2016-01-26 09:51:46

标签: javascript regex string-parsing

我有一个字符串,可以是随机长度,我需要检查它是否满足以下条件:

  • 以4位数字开头
  • 前4位数字形成2221-2720(信用卡号)
  • 范围内的数字

现在我有以下代码:

var isCardNumber = function (myString)
{
    var num = parseInt(myString.substr(0, 4));
    if(num) {
        return num >= 2221 && num <= 2720;
    };
    return false;
};

这可以更简单/更短吗?可能有正则表达式?

2 个答案:

答案 0 :(得分:1)

var isCardNumber = function ( cardNumber ) {
   var n = +cardNumber.substr( 0, 4 )
   return n && n > 2220 && n < 2721
}

答案 1 :(得分:0)

这是一般文化的正则表达式。正如其他人所说,我不建议使用它。您可以进行性能测试,但我希望它比整数比较测试慢。

^2(2[2-9]\d|[3-6]\d\d|7([0-1]\d|2[0-1]))

要构建这种正则表达式,你需要将你的范围分解为易于复制的字符串; 2221-2720是:

  • 2220至2299(22[2-9]\d
  • 2300至2699(2[3-6]\d\d
  • 2700至2719(27[0-1]\d
  • 2720至2721(272[0-1]

然后你可以像我一样将其分解,或者只是按原样使用它,每个片段用|分隔。