万事达卡的正则表达式
Regex for MasterCard
我找到了以下信用卡类型 MasterCard 的正则表达式
public static readonly string CreditMasterCard = @"^(5[1 - 5][0 - 9]{14})$";
然后我写了下面的代码:
Regex regexMasterCard = new Regex(CommonLibrary.RegexCreditCardStrings.CreditMasterCard);
if (regexMasterCard.IsMatch(number)) return CommonLibrary.CreditCardType.mastercard;
但是当我设置number='5308171154251187'时是错误的。正则表达式中有什么不正确的地方?
你只需要删除字符 classes:
中的 spaces
^5[1-5][0-9]{14}$
那些 space 在字符 class 中总是有意义的(即使您指定了 RegexOptions.IgnorePatternWhitespace
标志)并且在您的情况下它们创建的范围从 space 到space,不是从1到5和0到9的数字。此外,不需要在外括号中,您不需要捕获整个模式(您始终可以使用 [=13=]
反向引用或 match.Value
来引用整个匹配)。
参见regex demo。
根据@saj 的评论,您现在可以使用
^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$
详情:
^
- 字符串开头
(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)
- 任何备选方案:
5[1-5][0-9]{2}
- 5
, 一个 1
到 5
和任何 2 位数字 (5100
到 5599
)
222[1-9]
- 2221
到 2229
22[3-9][0-9]
- 2230
到 2299
2[3-6][0-9]{2}
- 2
,然后是 3
到 6
和任何 2 位数字(2300
到 2699
)
27[01][0-9]
- 2700
直到 2719
2720
- 2720
[0-9]{12}
- 任意 12 位数字
$
- 字符串结尾。
我找到了以下信用卡类型 MasterCard 的正则表达式
public static readonly string CreditMasterCard = @"^(5[1 - 5][0 - 9]{14})$";
然后我写了下面的代码:
Regex regexMasterCard = new Regex(CommonLibrary.RegexCreditCardStrings.CreditMasterCard);
if (regexMasterCard.IsMatch(number)) return CommonLibrary.CreditCardType.mastercard;
但是当我设置number='5308171154251187'时是错误的。正则表达式中有什么不正确的地方?
你只需要删除字符 classes:
中的 spaces^5[1-5][0-9]{14}$
那些 space 在字符 class 中总是有意义的(即使您指定了 RegexOptions.IgnorePatternWhitespace
标志)并且在您的情况下它们创建的范围从 space 到space,不是从1到5和0到9的数字。此外,不需要在外括号中,您不需要捕获整个模式(您始终可以使用 [=13=]
反向引用或 match.Value
来引用整个匹配)。
参见regex demo。
根据@saj 的评论,您现在可以使用
^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$
详情:
^
- 字符串开头(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)
- 任何备选方案:5[1-5][0-9]{2}
-5
, 一个1
到5
和任何 2 位数字 (5100
到5599
)222[1-9]
-2221
到2229
22[3-9][0-9]
-2230
到2299
2[3-6][0-9]{2}
-2
,然后是3
到6
和任何 2 位数字(2300
到2699
)27[01][0-9]
-2700
直到2719
2720
-2720
[0-9]{12}
- 任意 12 位数字$
- 字符串结尾。