Rexact
Cheatsheet

Regex Minecraft (Java Edition) username

A Minecraft Java Edition username isn't just "letters, digits and underscore": Mojang enforces a 3-character minimum, a rule that a Go library actually used in production (minotar, the skin API) ignores by accepting a single character. A GitHub repository goes further with a classic anchor bug: an unparenthesized alternation means "^" and "$" each bind to only one branch, letting through strings far longer than intended. Here's a pattern respecting the real 3-16 range, compared against these three attempts.

/^[A-Za-z0-9_]{3,16}$/
passes 22/22 cases

Comparison of existing patterns

Implementation

const re = new RegExp("^[A-Za-z0-9_]{3,16}$", "");
re.test(input);

Limits

  • Valide seulement la FORME (3-16 caractères parmi lettres/chiffres/underscore) : ne consulte pas l'API Mojang (sessionserver.mojang.com) pour confirmer qu'un pseudo est réellement attribué et actif.
  • N'impose pas les restrictions de contenu de Mojang (pseudos offensants ou trompeurs interdits, indépendamment de la forme) : un pseudo syntaxiquement valide peut malgré tout être refusé à la création par Mojang pour des raisons de modération.
  • Ne couvre que le Java Edition : le Bedrock Edition (consoles, mobile) utilise un Gamertag Xbox partagé entre plateformes, avec ses propres règles de longueur et de caractères.
  • Ne reflète pas l'historique des changements de pseudo : Mojang limite à un changement tous les 30 jours et conserve l'historique des anciens pseudos, deux règles qu'une regex sur une seule chaîne ne peut pas exprimer.