Avec quelques expressions régulières simples, vous pouvez facilement vérifier si votre client a entré un numéro de carte de crédit valide sur votre bon de commande. Vous pouvez même déterminer le type de carte de crédit utilisée. Chaque émetteur de carte a sa propre gamme de numéros de carte, identifiés par les 4 premiers chiffres.
Vous pouvez utiliser une expression régulière légèrement différente pour trouver des numéros de carte de crédit, ou des séquences de numéros qui pourraient être des numéros de carte de crédit, dans des documents plus volumineux. Cela peut être très utile pour prouver lors d’un audit de sécurité que vous n’exposez pas de manière incorrecte les détails financiers de vos clients.
Nous commencerons par le bon de commande.
Suppression des espaces et des tirets
La première étape consiste à supprimer tous les non-chiffres du numéro de carte saisi par le client. Les cartes de crédit physiques ont des espaces dans le numéro de carte pour regrouper les chiffres, ce qui facilite la lecture ou la saisie par les humains. Votre formulaire de commande doit donc accepter des numéros de carte avec des espaces ou des tirets.
Pour supprimer tous les non-chiffres du numéro de carte, utilisez simplement la fonction « remplacer tout » dans votre langage de script pour rechercher l’expression régulière + et la remplacer par rien. Si vous souhaitez uniquement remplacer les espaces et les tirets, vous pouvez utiliser +. Si cette expression régulière semble étrange, rappelez-vous que dans une classe de caractères, le trait d’union est un littéral lorsqu’il se produit juste avant la parenthèse de fermeture (ou juste après la parenthèse d’ouverture ou le caret de négation).
Si vous vous demandez à quoi sert le plus: c’est pour la performance. Si l’entrée a des non-chiffres consécutifs, tels que 1 === 2, alors + correspond aux trois signes égaux à la fois et les supprime en un seul remplacement. Sans le plus, trois remplacements seraient nécessaires. Dans ce cas, les économies ne sont que de quelques microsecondes. Mais c’est une bonne habitude de garder l’efficacité de l’expression régulière dans le fond de votre esprit. Bien que les économies soient minimes ici, l’effort de taper le plus supplémentaire l’est également.
Validation des Numéros de carte de crédit sur Votre Bon de commande
La validation des numéros de carte de crédit est le travail idéal pour les expressions régulières. Ils ne sont qu’une séquence de 13 à 16 chiffres, avec quelques chiffres spécifiques au début qui identifient l’émetteur de la carte. Vous pouvez utiliser les expressions régulières spécifiques ci-dessous pour alerter les clients lorsqu’ils essaient d’utiliser un type de carte que vous n’acceptez pas, ou pour acheminer les commandes utilisant différentes cartes vers différents processeurs. Toutes ces expressions régulières ont été extraites de la bibliothèque de RegexBuddy.
- Visa: ^4{12} (?:{3})? All Tous les numéros de carte Visa commencent par un 4. Les nouvelles cartes ont 16 chiffres. Les anciennes cartes en ont 13.
- MasterCard: ^(?:5{2}|222|22|2{2}|27|2720){12}$ Les numéros MasterCard commencent par les numéros 51 à 55 ou par les numéros 2221 à 2720. Tous ont 16 chiffres.
- American Express : ^3{13} ^ Les numéros de carte American Express commencent par 34 ou 37 et comportent 15 chiffres.
- Club des convives: ^3 (?: 0/) {11} numbers Les numéros de carte Diners Club commencent par 300 à 305, 36 ou 38. Tous ont 14 chiffres. Il existe des cartes Diners Club qui commencent par 5 et ont 16 chiffres. Il s’agit d’une coentreprise entre Diners Club et MasterCard, et devrait être traité comme une MasterCard.
- Découvrez: ^6(?:011/5{2}){12}$ Les numéros de carte Discover commencent par 6011 ou 65. Tous ont 16 chiffres.
- JCB: ^(?: 2131/1800/35\d{3})\d{11} cards Les cartes JCB commençant par 2131 ou 1800 ont 15 chiffres. Les cartes JCB commençant par 35 ont 16 chiffres.
Si vous voulez juste vérifier si le numéro de carte semble valide, sans déterminer la marque, vous pouvez combiner les six expressions régulières ci-dessus en utilisant l’alternance. Un groupe non capturant place les ancres en dehors de l’alternance. L’espacement libre permet aux commentaires et à l’expression régulière de s’adapter à la largeur de cette page.
^(?:4{12}(?:{3})? #Visa
|(?: 5{2} # MasterCard
| 222/22/2{2}|27|2720){12}
| 3{13} # American Express |(?: 2131/1800/35\d{3})\d{11} #JCB
)$
Ces expressions régulières captureront facilement des nombres qui ne sont pas valides car le client a entré trop ou trop peu de chiffres. Ils n’attraperont pas de chiffres avec des chiffres incorrects. Pour cela, vous devez suivre l’algorithme de Luhn, ce qui ne peut pas être fait avec une expression régulière. Et bien sûr, même si le numéro est mathématiquement valide, cela ne signifie pas qu’une carte avec ce numéro a été émise ou qu’il y a de l’argent dans le compte. L’avantage ou l’expression régulière est que vous pouvez le mettre dans un peu de JavaScript pour vérifier instantanément les erreurs évidentes, au lieu de faire attendre au client 30 secondes que votre processeur de carte de crédit échoue la commande. Et si votre processeur de carte facture les transactions ayant échoué, vous voudrez vraiment implémenter à la fois l’expression régulière et la validation Luhn.
Trouver des numéros de carte de crédit dans des documents
Avec deux modifications simples, vous pouvez utiliser l’une des expressions régulières ci-dessus pour trouver des numéros de carte dans des documents plus volumineux. Remplacez simplement le caret et le dollar par une limite de mot comme dans \b4{12}(?:{3})?\b.
Si vous envisagez de rechercher un serveur de documents volumineux, une expression régulière plus simple accélérera la recherche. À moins que votre entreprise n’utilise des numéros à 16 chiffres à d’autres fins, vous aurez peu de faux positifs. L’expression régulière \b\d{13,16}\b trouvera n’importe quelle séquence de 13 à 16 chiffres.
Lorsque vous recherchez un disque dur rempli de fichiers, vous ne pouvez pas supprimer les espaces et les tirets en premier comme vous le pouvez lors de la validation d’un seul numéro de carte. Pour trouver des numéros de carte avec des espaces ou des tirets, utilisez \b(?: \d*?) {13,16}\b. Cette expression régulière permet n’importe quelle quantité d’espaces et de tirets n’importe où dans le nombre. C’est vraiment le seul moyen. Visa et MasterCard mettent des chiffres par jeux de 4, tandis qu’Amex et Discover utilisent des groupes de 4, 5 et 6 chiffres. Les personnes qui entrent les numéros peuvent avoir des idées différentes pour le moment.
Faire un don
Ce site vous a-t-il fait économiser un voyage à la librairie? Veuillez faire un don pour soutenir ce site, et vous aurez un accès à vie à ce site sans publicité!