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

Check if a string starts with a number in range

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

现在我有以下代码:

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

这可以做到吗simpler/shorter?可能使用正则表达式?

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

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

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

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