Domanda

Ho bisogno di una regex (php) per abbinare le regole del nome utente di Yahoo:

  

Usa da 4 a 32 caratteri e inizia con una lettera. Puoi usare lettere, numeri, trattini bassi e un punto (.).

È stato utile?

Soluzione

/^[A-Za-z](?=[A-Za-z0-9_.]{3,31}$)[a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*$/

O un po 'più breve:

/^[a-z](?=[\w.]{3,31}$)\w*\.?\w*$/i

Altri suggerimenti

/[a-zA-Z][a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*/

E controlla se strlen ($ username) > = 4 e < = 32.

Un limite di un punto? È difficile.

Non sono un esperto di regex, ma penso che questo lo otterrebbe, tranne per quello:

[A-Za-z][A-Za-z0-9_.]{3,31}

Forse potresti controllare per. requisito separatamente?

Usando i lookaheads potresti fare quanto segue:

^(?=[A-Za-z](?:\w*(?:\.\w*)?$))(\S{4,32})$

Dato che non hai specificato il tipo di regex di cui hai bisogno, ho aggiunto molte cose compatibili con Perl 5. Come (?: ... ) per i genitori non catturanti.

Nota: ho aggiunto nuovamente la parentesi chiusa mancante.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top