Rexact
Cheatsheet

Regex RUT chilien

Un RUT chilien est un numéro de 1 à 8 chiffres, un tiret et une clé de 0 à 9 ou K, souvent écrit avec des points : « 76.793.310-K ». Les tentatives réelles se trompent dans les deux sens. Le mode strict de django-localflavor exige les points et rejette « 76793310-K » comme « 11-6 ». Son mode non strict accepte « 1.2.3-4 » et « 12.345678-5 ». La bibliothèque rut.js accepte « 12.345678-5 » et un corps de 11 chiffres. Voici un motif qui impose le tiret, des points bien placés ou pas de points du tout, comparé à ces tentatives.

/^(?:[1-9]\d?(?:\.\d{3}){2}|[1-9]\d{0,2}(?:\.\d{3})?|[1-9]\d{0,7})-[\dkK]$/
passe 25/25 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^(?:[1-9]\\d?(?:\\.\\d{3}){2}|[1-9]\\d{0,2}(?:\\.\\d{3})?|[1-9]\\d{0,7})-[\\dkK]$", "");
re.test(input);

Limites

  • Valide seulement la FORME : ne calcule pas la clé modulo 11. « 12.345.678-9 » (la bonne clé est 5) et « 1.985.231-K » (la bonne est 8) ont la bonne forme mais une clé fausse, et passent ce motif ; seul un calcul dans le code les rejette.
  • Les points sont une convention d'affichage, pas une règle du SII : le motif accepte soit des points bien placés (« 76.793.310-K »), soit aucun (« 76793310-K »). Normalisez en « 76793310-K » avant de stocker.
  • Exige un tiret avant la clé, que certaines saisies omettent (« 767933106 ») : ce motif les rejette. Le K doit être majuscule dans les fichiers du SII ; ce motif accepte aussi « k » : normalisez la casse avant stockage.
  • L'algorithme de la clé vient de Wikipédia et du code de django-localflavor et de rut.js : aucune page officielle du SII consultée ne le décrit. Un corps de 8 chiffres au plus est une limite pratique, pas une règle documentée.

Pages liées