Rexact
Cheatsheet

Regex ISWC (musical work code)

An ISWC (ISO 15707) is written 'T-034.524.680-1': the T prefix, nine work-identifier digits in groups of three separated by dots, a hyphen and a modulo 10 check digit (sum 1 + Σ i×di for i = 1..9, then 10 minus the remainder). The unseparated form 'T0345246801' is common in storage. The attempts I read are either tolerant (MusicBrainz and IsoCodes accept mixed or missing separators, IsoCodes even spaces), or have an unescaped dot (music-codes: 'T-034x524x680-1' passes), or reject the unseparated form (Wikidata, unanchored). Here's a pattern accepting the two consistent forms, compared against those attempts.

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

Comparison of existing patterns

Implementation

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

Limits

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

Related pages