Rexact
Cheatsheet

Regex PIN code indien

Un PIN code indien a 6 chiffres, le premier de 1 à 9. Un module Drupal avait pourtant une regex où « [1-9]{3} » exigeait que les trois premiers chiffres soient non nuls : « 110001 » (Connaught Place, Delhi) était rejeté, le bug a été signalé en 2008. Sa correction, reprise par GeeksforGeeks, accepte maintenant « 111111 » et « 100000 », des codes qui n'existent pas : seuls environ 19 584 des 900 000 PIN possibles sont attribués. Voici un motif qui exclut aussi les préfixes à deux chiffres jamais utilisés (10, 29, 35, 54, 55, 65, 66, 86 à 89), comparé à ces tentatives réelles.

/^(?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{2} ?[0-9]{3}$/
passe 22/22 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^(?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{2} ?[0-9]{3}$", "");
re.test(input);

Limites

  • Valide seulement la FORME (6 chiffres, premier chiffre 1 à 9, préfixes à deux chiffres connus comme inutilisés exclus) : ne vérifie pas qu'un PIN est réellement attribué. Seuls environ 19 584 des 900 000 combinaisons possibles le sont, d'après le jeu de données data.gov.in de 2019 : « 111111 » passe, alors qu'il n'existe pas.
  • Les préfixes exclus (10, 29, 35, 54, 55, 65, 66, 86 à 89) viennent d'un jeu de données de 2019 et correspondent à la liste qu'utilise validator.js : si India Post ouvre un nouveau préfixe, ce motif le rejettera à tort. Le préfixe 9, le service postal de l'armée, est accepté, même si ce jeu de données n'en contient aucun.
  • L'espace après le 3e chiffre (« 400 001 ») est une convention d'écriture qu'on trouve sur le web, pas une règle officielle : aucune page d'India Post n'a pu être consultée pour confirmer la forme exacte. Normalisez le code en 6 chiffres collés avant de le stocker.
  • N'accepte qu'une seule espace, ASCII, à cet emplacement : « 110 001 » (deux espaces), « 1100 01 » ou une tabulation sont rejetés, contrairement à la regex de GeeksforGeeks qui accepte n'importe quel espace blanc.

Codes postaux d’autres pays

Pages liées