gpt4 book ai didi

c# - 万事达卡的正则表达式

转载 作者:行者123 更新时间:2023-11-30 14:26:20 25 4
gpt4 key购买 nike

我找到了以下信用卡类型 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' 时,它是错误的。正则表达式中有什么不正确的地方?

最佳答案

你只需要删除字符类中的空格:

^5[1-5][0-9]{14}$

这些空格在字符类中总是有意义的(即使您指定了 RegexOptions.IgnorePatternWhitespace 标志)并且在您的情况下它们创建了从空格到空格的范围,而不是从 1 到 5 和 0 到9 位数字。此外,不需要外括号,您不需要捕获整个模式(您始终可以使用 $0 反向引用或 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}$

参见 regex demo

详细信息:

  • ^ - 字符串的开始
  • (?: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} - 515 和任何 2 位数字(51005599)
    • 222[1-9] - 22212229
    • 22[3-9][0-9] - 22302299
    • 2[3-6][0-9]{2} - 2,然后是 36 和任何 2 位数字(23002699)
    • 27[01][0-9] - 27002719
    • 2720 - 2720
  • [0-9]{12} - 任何 12 位数字
  • $ - 字符串结尾。

关于c# - 万事达卡的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35689191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com