Rexact
Cheatsheet

Regex numéro de carte Visa

Un numéro Visa commence par 4. La FAQ « numerics » de Visa parle de PAN de 16 ou 19 chiffres ; le tableau de Wikipedia ajoute 13 chiffres (anciennes plages), ce que Visa ne confirme pas. Les tentatives relues divergent sur la longueur : regular-expressions.info n'accepte que 13 ou 16 chiffres (un PAN de 19 chiffres est refusé), validator.js accepte 13 et 16 à 19 chiffres, donc aussi 17 et 18, que personne n'émet, Cleave.js et php-credit-card-validator ne testent que le préfixe, et le motif de l'OWASP ne borne pas la fin de sa première branche. Voici un motif qui accepte exactement 13, 16 et 19 chiffres, comparé à ces tentatives.

/^4(?:[0-9]{12}|[0-9]{15}|[0-9]{18})$/
passe 25/25 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^4(?:[0-9]{12}|[0-9]{15}|[0-9]{18})$", "");
re.test(input);

Limites

  • Valide seulement la FORME (préfixe et longueur) : ni la clé de Luhn (le corpus contient un numéro de forme correcte et de clé fausse qui passe), ni l'existence du compte, ni la date d'expiration ou le CVV. Les espaces et tirets sont refusés : normalisez avant validation.
  • Les PAN de 13 chiffres sont acceptés d'après Wikipedia ; la FAQ de Visa ne cite que 16 et 19 chiffres. Si vous n'acceptez que les cartes actuelles, retirez la branche de 13 chiffres.
  • Le motif n'identifie pas les sous-marques (Electron, débit) ni les plages 8 chiffres qui se chevauchent avec d'autres réseaux.
  • Ne stockez ni ne journalisez de vrais numéros de carte (PCI DSS) ; n'utilisez que des numéros de test dans vos tests.

Pages liées