Regex Xbox Gamertag
Since the 2019 overhaul, an Xbox Gamertag is no longer 15 characters but 12 - Microsoft reserved 3 characters for a numeric suffix ("#1234") for when the chosen name is already taken. Three independent projects found on GitHub and Drupal.org (an Xbox 360 emulator, a Python availability-checking script, a Drupal module) all still carry the historical 15-character limit - one of them baked right into the error message shown to the user. Here's an up-to-date pattern, compared against these three attempts stuck in the past.
/^[A-Za-z][A-Za-z0-9 ]{2,11}$/passes 20/20 cases
Comparison of existing patterns
| Source | pattern | Score on the corpus | ReDoS |
|---|---|---|---|
| xenia-manager (émulateur Xbox 360, C#) — aucune borne de longueur dans la regex elle-même (limite de 15 gérée séparément en code, valeur elle-même obsolète depuis 2019) | ^[A-Za-z][A-Za-z0-9]*( [A-Za-z0-9]+)*$ | 16 / 20 | safe |
| EthanC/Gamertag (script Python de vérification de disponibilité) — n'impose ni longueur ni lettre de départ, la limite de 15 (déjà obsolète) n'existe que dans une vérification séparée hors regex | ^[a-zA-Z0-9 ]+$ | 12 / 20 | safe |
| Module Drupal (ticket drupal.org) — même limite obsolète de 15 caractères, gravée jusque dans le message d'erreur affiché à l'utilisateur | ^[a-zA-Z0-9 ]+$ | 12 / 20 | safe |
Implementation
const re = new RegExp("^[A-Za-z][A-Za-z0-9 ]{2,11}$", "");
re.test(input);Limits
- Valide seulement la FORME (3-12 caractères, doit commencer par une lettre) : ne consulte pas le service Xbox Live pour confirmer qu'un Gamertag est réellement attribué et actif.
- Ne couvre que les lettres latines et les chiffres : Microsoft prend en charge 13 alphabets différents (dont cyrillique, arabe, chinois) pour le Gamertag — hors périmètre d'un motif limité à A-Z et 0-9 pour rester lisible.
- N'impose pas les règles fines sur les espaces (jamais en début, en fin, ni deux consécutifs) : ce motif autorise des espaces n'importe où dans la plage 3-12, plus permissif que la règle réelle de Microsoft sur ce point précis.
- N'inclut jamais le suffixe numérique (« #1234 ») ajouté automatiquement quand le nom choisi est déjà pris par un autre joueur : ce motif valide le nom seul, pas la forme complète affichée en jeu.