Rexact
Cheatsheet

Regex ISRC

An ISRC isn't just "12 characters": the first 2 are letters (country code), not any alphanumeric. A regex posted on Microsoft Q&A never anchors the pattern, so any 12-character substring inside a longer text gets accepted. Another, taken from a MusicBrainz forum for extracting ISRCs from cue-sheet listings, makes each hyphen independently optional - an inconsistent format like "US-RC1760-7839" passes. Here's a pattern validating the whole string, compared against those two attempts and a third from a real GitHub project.

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

Comparison of existing patterns

Implementation

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

Limits

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