Une expression régulière est une séquence de caractères qui forme un modèle de recherche. Les expressions régulières sont principalement utilisées pour rechercher, valider et transformer des textes ou des chaînes.

Apprenez à valider les numéros de carte de crédit tels que Mastercard, Visa Card et American Express avec des expressions régulières.

Quand utiliser RegEx pour valider un numéro de carte de crédit ?

Les services tiers facturent chaque tentative de transaction. Que la transaction soit réussie ou non, vous devez payer les frais. Dans de tels cas, vous souhaitez refuser les numéros de carte de crédit qui sont clairement invalides. Vous pouvez valider rapidement les numéros de carte de crédit à l'aide d'expressions régulières.

Mais vous ne pouvez pas vous fier entièrement à la validation des expressions régulières pour votre fonctionnalité de paiement. Les émetteurs de cartes changent régulièrement leurs modèles de numéros de carte (en introduisant de nouveaux modèles ou en retirant les anciens), de sorte que la méthode regex n'est pas la solution la plus robuste. Bien que vous puissiez essayer de vous tenir au courant des modèles de cartes à partir d'une source telle que

instagram viewer
Wikipédia qui est fréquemment mis à jour.

Vous pouvez également utiliser regex pour trouver rapidement la marque de la carte que vous pourrez ensuite utiliser pour afficher des logos ou des étiquettes.

Les expressions régulières ont plusieurs cas d'utilisation pratiques. La commande Linux grep est probablement le cas d'utilisation pratique le plus courant de regex.

Le code utilisé dans ce projet est disponible dans un Référentiel GitHub et est libre d'utilisation sous la licence MIT.

RegEx pour valider le numéro de Mastercard

Un numéro de Mastercard est valide s'il remplit les conditions suivantes :

  1. La chaîne ne doit pas contenir de caractères spéciaux, d'alphabets ou d'espaces.
  2. Le nombre de caractères doit être égal à 16.
  3. La chaîne doit commencer soit par une plage de nombres à 2 chiffres (allant de 51 à 55) soit par une plage de nombres à 4 chiffres (allant de 2221 à 2720).
    • Si la chaîne commence par une plage de nombres à 2 chiffres (allant de 51 à 55), les 14 chiffres suivants doivent être un nombre compris entre 0 et 9.
    • Si la chaîne commence par une plage de nombres à 4 chiffres (allant de 2221 à 2720), les 12 chiffres suivants doivent être un nombre compris entre 0 et 9.

L'expression régulière suivante satisfait les conditions ci-dessus et peut valider un numéro de Mastercard :

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

Si vous n'êtes pas à l'aise avec l'expression ci-dessus, consultez un guide du débutant sur les expressions régulières d'abord.

Vous pouvez utiliser l'expression régulière ci-dessus pour valider le numéro de Mastercard dans n'importe quel langage de programmation. Voici comment procéder en Python :

importer concernant

définitivementcheckMasterCardNo(N ° de carte):
expression régulière = "^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[ 0-1]\\d|2720)[0-9]{12}$"
r = re.compile (regex)

si (concernant.recherche(r, N ° de carte)):
imprimer("Valide")
autre:
imprimer("Pas valide")

carte1 = "5110762060017101"
checkMasterCardNo (carte1)

carte2 = "8632458236982734"
checkMasterCardNo (carte2)

L'exécution de ce code confirmera que le premier numéro est valide mais que le second ne l'est pas :

RegEx pour valider le numéro de carte Visa

Un numéro de carte Visa est valide s'il remplit les conditions suivantes :

  1. La chaîne ne doit pas contenir de caractères spéciaux, d'alphabets ou d'espaces.
  2. La chaîne doit commencer par 4.
  3. Le nombre de caractères doit être égal à 13 ou 16. Les anciennes cartes visa ont 13 caractères et les nouvelles ont 16 caractères.
    • Si le nombre de caractères est égal à 13, les 12 derniers chiffres doivent être un nombre compris entre 0 et 9.
    • Si le nombre de caractères est égal à 16, les 15 derniers chiffres doivent être un nombre compris entre 0 et 9.

L'expression régulière suivante satisfait les conditions ci-dessus et vous pouvez l'utiliser pour valider un numéro de carte Visa :

^4[0-9]{12}(?:[0-9]{3})?$

Vous trouverez ci-dessous l'approche Python pour valider un numéro de carte Visa :

importer concernant

définitivementcheckVisaCardNo(N ° de carte):
expression régulière = "^4[0-9]{12}(?:[0-9]{3})?$"
r = re.compile (regex)

si (concernant.recherche(r, N ° de carte)):
imprimer("Valide")
autre:
imprimer("Pas valide")

carte1 = "4539890694174109"
checkVisaCardNo (card1)

carte2 = "49237429498"
checkVisaCardNo (card2)

Encore une fois, la sortie confirme que le premier nombre est valide tandis que le second n'est pas valide :

RegEx pour valider le numéro de carte American Express

Un numéro de carte American Express est valide s'il remplit les conditions suivantes :

  1. La chaîne ne doit pas contenir de caractères spéciaux, d'alphabets ou d'espaces.
  2. Ce nombre de caractères doit être égal à 15.
  3. La chaîne doit commencer par 34 ou 37.
  4. Les 13 derniers chiffres doivent être un nombre compris entre 0 et 9.

L'expression régulière suivante satisfait les conditions ci-dessus et vous pouvez l'utiliser pour valider un numéro de carte American Express :

^3[47][0-9]{13}$

Vous pouvez valider un numéro de carte American Express à l'aide du code Python suivant :

importer concernant

définitivementcheckAmericanExpressCardNon(N ° de carte):
expression régulière = "^3[47][0-9]{13}$"
r = re.compile (regex)

si (concernant.recherche(r, N ° de carte)):
imprimer("Valide")
autre:
imprimer("Pas valide")

carte1 = "372831730491196"
checkAmericanExpressCardNo (card1)

carte2 = "84732593847743042"
checkAmericanExpressCardNo (card2)

Une fois de plus, la sortie confirme que le premier nombre est valide, mais que le second n'est pas valide :

Applications des expressions régulières

Vous pouvez utiliser des expressions régulières assez simples pour valider les numéros de carte de crédit courants. RegEx est un outil puissant que vous pouvez utiliser pour le prétraitement des données, la correspondance de modèles, l'extraction de données, l'analyse lexicale, le traitement du langage naturel, le grattage Web, etc. Vous pouvez également utiliser des expressions régulières dans le développement Web pour gérer la validation des formulaires HTML.