Rexact
Cheatsheet

Regex ISWC (code d'œuvre musicale)

Un ISWC (ISO 15707) s'écrit « T-034.524.680-1 » : le préfixe T, neuf chiffres d'identifiant d'œuvre groupés par trois et séparés par des points, un tiret et un chiffre de contrôle modulo 10 (somme 1 + Σ i×di pour i = 1..9, puis 10 moins le reste). La forme sans séparateur « T0345246801 » est courante en stockage. Les tentatives relues sont soit tolérantes (MusicBrainz et IsoCodes acceptent des séparateurs mélangés ou absents, IsoCodes même des espaces), soit contiennent un point non échappé (music-codes : « T-034x524x680-1 » passe), soit refusent la forme sans séparateur (Wikidata, non ancrée). Voici un motif qui accepte les deux formes cohérentes, comparé à ces tentatives.

/^T(?:-[0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]|[0-9]{10})$/
passe 28/28 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^T(?:-[0-9]{3}\\.[0-9]{3}\\.[0-9]{3}-[0-9]|[0-9]{10})$", "");
re.test(input);

Limites

  • Valide seulement la FORME : la clé de contrôle n'est pas calculée (« T-034.524.680-2 », clé fausse, passe). Calculez 1 + Σ i×di (i = 1..9) puis 10 moins le reste modulo 10 pour la vérifier ; l'existence de l'œuvre dans la base de la CISAC ne peut pas être contrôlée par une regex.
  • L'algorithme de clé vient d'un brouillon de comité ISO/TC 46/SC 9 (1999), cohérent avec la bibliothèque IsoCodes ; la norme ISO 15707 publiée est payante et n'a pas été consultée.
  • Seule la forme cohérente (tout avec séparateurs ou tout sans) est acceptée ; la minuscule, les espaces et les mélanges de séparateurs sont refusés : normalisez avant validation.

Pages liées