Pregunta

Necesito una expresión regular (php) para que coincida con las reglas de nombre de usuario de Yahoo:

  

Use de 4 a 32 caracteres y comience con una letra. Puede usar letras, números, guiones bajos y un punto (.).

¿Fue útil?

Solución

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

O un poco más corto:

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

Otros consejos

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

Y compruebe si se ha eliminado ($ username) > = 4 y < = 32.

¿Un límite de un punto? Eso es complicado.

No soy un experto en expresiones regulares, pero creo que esto lo conseguiría, excepto por eso:

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

Tal vez podría verificar el. requisito por separado?

Usando lookaheads podría hacer lo siguiente:

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

Debido a que no especificó qué tipo de expresión regular necesitaba, agregué muchas cosas compatibles con Perl 5. Como (?: ... ) para padres que no capturan.

Nota: agregué los paren cercanos que faltan nuevamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top