【问题标题】:Credit Card validator for Symfony 1.4Symfony 1.4 的信用卡验证器
【发布时间】:2011-09-10 04:19:32
【问题描述】:

有人在 Symfony 1.4 中使用有效的信用卡号码验证器吗?

我通过http://brentertainment.com/2009/09/01/some-helpful-symfony-form-validators/ 找到了https://gist.github.com/181049,但至少 switch 正则表达式模式似乎肯定被破坏了,并且可能 jcb / enroute 也是如此。

我认为问题在于它在尝试匹配前缀时使用方括号而不是括号,但如果它被破坏了,那么它会让我怀疑验证器的其余部分。

/^[4903|4911|4936|5641|6333|6759|6334|6767]\d{12}$/

应该是

/^(4903|4911|4936|5641|6333|6759|6334|6767)\d{12}$/

是否有人在生产中使用了有效且经过测试的验证器?最好用英国卡?

【问题讨论】:

    标签: php regex validation symfony1 credit-card


    【解决方案1】:

    RegexBuddy 库建议如下:

    ^(?:4\d{3}[ -]*\d{4}[ -]*\d{4}[ -]*\d(?:\d{3})?|5[1-5]\d{2}[ -]*\d{4}[ -]*\d{4}[ -]*\d{4}|6(?:011|5[0-9]{2})[ -]*\d{4}[ -]*\d{4}[ -]*\d{4}|3[47]\d{2}[ -]*\d{6}[ -]*\d{5}|3(?:0[0-5]|[68][0-9])\d[ -]*\d{6}[ -]*\d{4}|(?:2131|1800)[ -]*\d{6}[ -]*\d{5}|35\d{2}[ -]*\d{4}[ -]*\d{4}[ -]*\d{4})$
    

    以上将匹配所有信用卡,例如以下示例:

    Visa
    4123456789012345
    4123 4567 8901 2345
    4123-4567-8901-2345
    
    MasterCard
    5123456789012345
    5123-4567-8901-2345
    5123 4567 8901 2345
    
    Discover
    6011123456789012
    6011-1234-5678-9012
    6011 1234 5678 9012
    
    American Express
    341234567890123
    3412 345678 90123
    3412-345678-90123
    
    Diner's Club
    30012345678901
    3001 234567 8901
    3001-234567-8901
    
    JCB
    213112345678901
    2131 123456 78901
    2131-123456-78901
    3512345678901234
    3512 3456 7890 1234
    3512-3456-7890-1234
    

    【讨论】:

      【解决方案2】:

      我会远离美国正则表达式,该示例省略了许多有效前缀:Visa DR 为 40*,Visa/Electron 为 48*,solo 为 35*。

      对于大多数方案,长度也可以跨越 16-19 位,因此长度限制不正确。

      BIN 前缀(第 1 位 6)会定期修改(添加/取消/免除电子通信的范围),并且在较小程度上,第 4 位也是如此,因此您可能希望依赖第 1 位数字 &而是进行 LUHN 检查。

      如果您在英国; http://www.barclaycard.co.uk/business/documents/pdfs/bin_rules.pdf

      【讨论】:

        猜你喜欢
        • 2012-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-30
        • 2011-04-06
        • 2014-08-14
        • 1970-01-01
        相关资源
        最近更新 更多