web-dev-qa-db-fra.com

Test du numéro de carte de crédit Regex

Je teste une application où le motif Regex correspond à la carte de crédit, puis ces numéros doivent être mis en évidence. J'utilise le site http://regexpal.com/ pour créer des numéros de carte de crédit de test pour mes tests. mon exigence est d’avoir des numéros de carte de crédit valides pouvant contenir "-" et/ou "," entre eux.

http://regexpal.com .

J'ai besoin de quelques numéros de crédit avec les scénarios ci-dessous

  1. numéro de carte de crédit valide pouvant comporter un "-" entre tous les chiffres.
  2. numéro de carte de crédit valide pouvant comporter "," entre tous les chiffres.
  3. numéro de carte de crédit valide pouvant comporter "," ou "-" entre tous les chiffres.
36
user1209784

Expressions régulières du vendeur de cartes de crédit courantes:

  • Carte Amex: ^3[47][0-9]{13}$
  • BCGlobal: ^(6541|6556)[0-9]{12}$
  • Carte Carte Blanche: ^389[0-9]{11}$
  • Carte Diners Club: ^3(?:0[0-5]|[68][0-9])[0-9]{11}$
  • Carte de découverte: ^65[4-9][0-9]{13}|64[4-9][0-9]{13}|6011[0-9]{12}|(622(?:12[6-9]|1[3-9][0-9]|[2-8][0-9][0-9]|9[01][0-9]|92[0-5])[0-9]{10})$
  • Carte de paiement Insta: ^63[7-9][0-9]{13}$
  • Carte JCB: ^(?:2131|1800|35\d{3})\d{11}$
  • KoreanLocalCard: ^9[0-9]{15}$
  • Carte laser: ^(6304|6706|6709|6771)[0-9]{12,15}$
  • Carte Maestro: ^(5018|5020|5038|6304|6759|6761|6763)[0-9]{8,15}$
  • Mastercard: ^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$
  • Carte solo: ^(6334|6767)[0-9]{12}|(6334|6767)[0-9]{14}|(6334|6767)[0-9]{15}$
  • Carte de commutation: ^(4903|4905|4911|4936|6333|6759)[0-9]{12}|(4903|4905|4911|4936|6333|6759)[0-9]{14}|(4903|4905|4911|4936|6333|6759)[0-9]{15}|564182[0-9]{10}|564182[0-9]{12}|564182[0-9]{13}|633110[0-9]{10}|633110[0-9]{12}|633110[0-9]{13}$
  • Carte de paye syndicale: ^(62[0-9]{14,17})$
  • Carte Visa: ^4[0-9]{12}(?:[0-9]{3})?$
  • Visa Master Card: ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14})$
143
ajithparamban

Pour une carte de débit Rupay: ^6[0-9]{15}$

6
Aditya Rao

Carte Regx pour Rupay:

(508 [5-9] [0-9] {12}) | (6069 [8-9] [0-9] {11}) | (607 [0-8] [0-9] {12}) | (6079 [0-8] [0-9] {11}) | (608 [0-5] [0-9] {12}) | (6521 [5-9] [0-9] {11} ) | (652 [2-9] [0-9] {12}) | (6530 [0-9] {12}) | (6531 [0-4] [0-9] {11})

en utilisant la série de bacs: 508500 - 508999, 606985 - 606999, 607000 - 607899, 607900 - 607984, 608001 - 608500, 652200 --- 652999, 653000 --- 653099, 653100 --- 653149,

1
Padam Singh

En plus de tout ce qui précède, voici une regex pour les nouvelles MasterCard, qui comprend 2221-2720 BIN:

^5[1-5][0-9]{0,14}|^(222[1-9]|2[3-6]\\d{2}|27[0-1]\\d|2720)[0-9]{0,12}

Notez que cette expression régulière correspondra si l'utilisateur commence à taper les chiffres de la carte, qui correspondent à MasterCard. Par exemple, si l'utilisateur tape "222185" , l'expression rationnelle correspondra, car aucun autre type de carte ne commence par "2221" . Cette regex peut s'avérer utile si vous souhaitez afficher le type de carte lors de la saisie des premiers chiffres de la carte.

Sinon, si vous voulez "post factum" matching, vous pouvez changer la dernière partie de {0,14} et {0,12} à {14} et {12}:

^5[1-5][0-9]{14}|^(222[1-9]|2[3-6]\\d{2}|27[0-1]\\d|2720)[0-9]{12}
1
azizbekian

Regex pour les principaux réseaux de cartes

Master Card (2-Bin, 5-Bin les deux): "(?: 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} "

Visa : "^ 4 [0-9] {6,} $"

Diner's Club : "(^ 30 [0-5] [0-9] {11} $) | (^ (36 | 38) [0-9] {12} $)"

American Express : "^ [34 | 37] [0-9] {14} $"

JCB: "(^ 3 [0-9] {15} $) | (^ (2131 | 1800) [0-9] {11} $)"

Découvrez : "^ 6011 -?\D {4} -?\D {4} -?\D {4} $"

0
Ripudaman Singh

Je suis venu avec une regex qui permet des tirets et des espaces. Testez-le ici: https://regex101.com/r/Rx2iWD/1

Pour permettre les virgules (ce qui me semble inhabituel), ajoutez-le simplement à la définition sep.

En PHP:

$ccPatt = '/
    (?(DEFINE)
        (?<sep> [ -]?)
    )
    (?<!\d)(?:
      \d{4} (?&sep) \d{4} (?&sep) \d{4} (?&sep) \d{4}               # 16 digits
    | \d{3} (?&sep) \d{3} (?&sep) \d{3} (?&sep) \d (?&sep) \d{3}    # 13 digits
    | \d{4} (?&sep) \d{6} (?&sep) \d{4}                             # 14 digits
    | \d{4} (?&sep) \d{6} (?&sep) \d{5}                             # 15 digit card
    )(?!\d)
/xu';
0
mpen

First Data valide 15 chiffres pour Amex et 16 pour Visa, MC, Discover, Diners et jcb. Je ne leur envoie donc le numéro de carte que si le numéro comporte 15 ou 16 chiffres:

^[0-9]{15}(?:[0-9]{1})?$
0
Bolo