Regex Gamertag Xbox
Depuis la refonte de 2019, un Gamertag Xbox ne fait plus 15 caractères mais 12 — Microsoft a réservé 3 caractères pour un suffixe numérique (« #1234 ») quand le nom choisi est déjà pris. Trois projets indépendants trouvés sur GitHub et Drupal.org (un émulateur Xbox 360, un script Python de vérification de disponibilité, un module Drupal) reprennent tous encore la limite historique de 15 — l'un d'eux jusque dans son message d'erreur affiché à l'utilisateur. Voici un motif à jour, comparé à ces trois tentatives figées dans le passé.
/^[A-Za-z][A-Za-z0-9 ]{2,11}$/passe 20/20 cas
Comparatif des patterns existants
| Source | pattern | Score sur le 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 | sûr |
| 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 | sûr |
| 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 | sûr |
Implémentation
const re = new RegExp("^[A-Za-z][A-Za-z0-9 ]{2,11}$", "");
re.test(input);Limites
- 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.