Rexact
Cheatsheet

Regex JCB card number

According to the Discover Global Network bulletin (February 2017), the JCB range runs from 3528 to 3589 with 16 to 19 digits. The attempts I read are wider or narrower: regular-expressions.info accepts any 35xxx prefix on 16 digits only (plus the old 2131 and 1800 on 15 digits), Cleave.js and php-credit-card-validator only test '35'. Here's a pattern bounded to 3528-3589 with 16 to 19 digits, compared against those attempts.

/^35(?:2[89]|[3-8][0-9])[0-9]{12,15}$/
passes 23/23 cases

Comparison of existing patterns

Implementation

const re = new RegExp("^35(?:2[89]|[3-8][0-9])[0-9]{12,15}$", "");
re.test(input);

Limits

  • 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 anciennes plages JCB 2131/1800 (15 chiffres) sont exclues ; le bulletin signale en outre que 3528-3589 n'est activable qu'aux États-Unis par le réseau Discover. D'autres bibliothèques citent encore d'anciennes plages JCB (3088-3094, 3337-3349 notamment) : non vérifiées ici, non incluses.
  • Ne stockez ni ne journalisez de vrais numéros de carte (PCI DSS) ; n'utilisez que des numéros de test dans vos tests.

Related pages