Pergunta

Eu preciso de um (php) regex para coincidir com as regras de nome de usuário do Yahoo:

Use 4 a 32 caracteres e começar com uma letra. Você pode usar letras, números, sublinhados, e um ponto (.).

Foi útil?

Solução

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

Ou um pouco mais curto:

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

Outras dicas

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

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

A um limite do ponto? Isso é complicado.

Não sou especialista regex, mas acho que isso iria buscá-la, exceto para o seguinte:

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

Talvez você possa verificar o. exigência separadamente?

Usando lookaheads você poderia fazer o seguinte:

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

Porque você não especificou que tipo de regex que precisava eu ??adicionei um monte de Perl 5 material compatível. Como (?: ... ) para parens não captura.

Nota:. Eu adicionei o paren perto ausente novamente em

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top