Rexact
Cheatsheet

Regex ISRC

Un ISRC, ce n'est pas juste « 12 caractères » : les 2 premiers sont des lettres (code pays), pas n'importe quel alphanumérique. Une regex postée sur Microsoft Q&A n'ancre jamais le motif, donc n'importe quelle sous-chaîne de 12 caractères à l'intérieur d'un texte plus long est acceptée. Une autre, tirée d'un forum MusicBrainz pour extraire des ISRC depuis des relevés de cue-sheet, rend chaque tiret optionnel indépendamment — un format incohérent comme « US-RC1760-7839 » passe. Voici un motif qui valide la chaîne entière, comparé à ces deux tentatives et une troisième issue d'un vrai projet GitHub.

/^[A-Z]{2}[A-Z0-9]{3}[0-9]{7}$/
passe 20/20 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^[A-Z]{2}[A-Z0-9]{3}[0-9]{7}$", "");
re.test(input);

Limites

  • Valide seulement la FORME (2 lettres + 10 alphanumériques/chiffres) : ne consulte pas la base de données ISRC (registre géré par les agences nationales et l'IFPI) pour confirmer qu'un code est réellement attribué à un enregistrement.
  • N'exclut aucun code pays à 2 lettres invalide : contrairement à un code devise ISO 4217, la liste des codes pays d'enregistrement ISRC suit globalement ISO 3166-1, mais avec quelques exceptions historiques qu'une simple regex ne peut pas encoder sans la reproduire en dur.
  • Exige une chaîne de 12 caractères sans séparateur : la présentation conventionnelle groupée par tirets (« US-UAN-14-00011 »), courante à l'affichage, doit être retirée avant validation par ce motif.
  • Le code registrant (3 caractères après le code pays) n'a de signification que par rapport au registre national qui l'a attribué : ce motif ne peut pas vérifier qu'un registrant donné a bien été délégué par l'agence ISRC du pays concerné.