Rexact
Cheatsheet

Regex NINO britannique

Un NINO, ce n'est pas juste « 2 lettres + 6 chiffres + 1 lettre » : certaines lettres sont interdites en 1ère ou 2ème position, et 7 préfixes complets sont réservés. Fait amusant : le préfixe « QQ » utilisé dans l'exemple officiel gov.uk (« QQ 123456 C ») viole lui-même cette règle — Q étant exclu des deux positions, ce préfixe ne pourra jamais être un vrai NINO, un choix probablement délibéré pour qu'il ne collisionne jamais avec un numéro réel. Plus surprenant encore : la propre bibliothèque Java du gouvernement britannique (DWP) utilise une syntaxe d'intersection de classes de caractères (« [A-Z&&[^DFIQUV]] ») propre à Java — copiée telle quelle en JavaScript, elle ne provoque aucune erreur mais matche silencieusement autre chose. Voici un motif qui applique correctement toutes les règles, comparé à cette regex officielle piégée et deux autres tentatives.

/^(?!BG|GB|KN|NK|NT|TN|ZZ)[A-CEGHJ-PR-TW-Z][A-CEGHJ-NPR-TW-Z][0-9]{6}[A-D]$/
passe 21/21 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^(?!BG|GB|KN|NK|NT|TN|ZZ)[A-CEGHJ-PR-TW-Z][A-CEGHJ-NPR-TW-Z][0-9]{6}[A-D]$", "");
re.test(input);

Limites

  • Valide seulement la FORME (lettres autorisées, préfixes réservés exclus, 6 chiffres, lettre finale A-D) : ne consulte pas les registres HMRC pour confirmer qu'un NINO est réellement attribué à une personne.
  • Certaines combinaisons de préfixe restent réservées à des usages spécifiques (temporaires, administratifs) au-delà des 7 exclues ici : la page HMRC détaillant la liste complète (NIM39115) est elle-même retirée de la publication pour raisons réglementaires, seule NIM39110 reste exploitable publiquement.
  • Exige une chaîne sans espace ni tiret : la présentation à l'affichage groupée par paires (« QQ 12 34 56 C ») doit être retirée avant validation par ce motif.
  • Un NINO peut être suivi ou précédé d'espaces dans un formulaire de saisie libre sans que cela invalide la vraie donnée sous-jacente : ce motif exige une correspondance exacte de bout en bout, sans tolérance de bordure.
  • L'exemple canonique publié par gov.uk lui-même (« QQ 12 34 56 A ») ne passe pas ce motif : le préfixe « QQ » viole la règle qu'il est censé illustrer (Q exclu des deux premières positions) — probablement un choix délibéré pour qu'un exemple de documentation ne puisse jamais correspondre à un NINO réellement attribuable.