Rexact
Cheatsheet

Regex Chilean RUT

A Chilean RUT is a number of 1 to 8 digits, a hyphen and a check character from 0 to 9 or K, often written with dots: '76.793.310-K'. Real attempts get it wrong in both directions. django-localflavor's strict mode requires the dots and rejects '76793310-K' as well as '11-6'. Its non-strict mode accepts '1.2.3-4' and '12.345678-5'. The rut.js library accepts '12.345678-5' and an 11-digit body. Here's a pattern requiring the hyphen and either well-placed dots or none, compared against those attempts.

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

Comparison of existing patterns

Implementation

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);

Limits

  • 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.

Related pages