检查字符串是否以范围内的数字开头
Check if a string starts with a number in range
我有一个可以任意长度的字符串,我需要检查它是否满足以下条件:
- 以 4 位数字开头
- 前 4 位数字组成 2221-2720 范围内的数字(信用卡号)
现在我有以下代码:
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]
)
然后你可以像我一样分解它,或者按原样使用它,每个片段用 |
分隔。
我有一个可以任意长度的字符串,我需要检查它是否满足以下条件:
- 以 4 位数字开头
- 前 4 位数字组成 2221-2720 范围内的数字(信用卡号)
现在我有以下代码:
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]
)
然后你可以像我一样分解它,或者按原样使用它,每个片段用 |
分隔。