Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daniel-Lopes

definir quantidade total de caracteres na expressão regular

Recommended Posts

Pessoal, estava lendo hoje sobre expressões regulares e estou com duvida sobre como definir o numero maximo de caracteres na expressão.

 

Li sobre os assunto testei algumas e cheguei ao que eu quero mas não consigo definir o máximo de caracteres

vejam

 

^[a-zA-Z]{3}([._-]?[a-zA-Z0-9])*$

 

eu quero uma expressão para definição de user name, começando com pelo menos 3 letras e seuindo no qual pode conter apenas caracteres de A-Z (maiúsculos ou minúsculos) 0-9 e se tiver . (ponto) ou _ (underline) ou - (hífen) deverá ter depois pelo menos um numero ou uma letra.

 

E o total de tudo tem que dá 20 caracteres e foi aí que não consegui.

Alguém pode me ajudar ?

 

Desde ja agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, vamos lá...

 

Começando com 3 letras:

[a-z]{3}

Terminando com uma letra ou um número

[a-z0-9]{1}

Esse número 1 aqui é desnecessário, mas vamos deixar só para facilitar o entendimento da ER.

 

No meio, deve ter uma sequencia dos caracteres que você citou, devendo ter no mínimo 1 caracteres (o que fará com que o resultado final tenha 5 caracteres no mínimo) e no máximo 16 (20 -- 3 + 16 + 1). Como você não disse qual seria o número mínimo de caracteres, vou presumir que sejam 5 (3 + 1 + 1). Se forem mais, basta "incrementar" o número 1 na sequencia abaixo:

[a-z0-9._-]{1,16}

Obs.: se você usar o modificador /i, não será necessário se preocupar com o case, as letras irão casar tanto maiúsculas quanto minúsculas.

 

Ex.:

if (preg_match("/[a-z]{3}[a-z0-9._-]{1,16}[a-z0-9]{1}/i", $_POST['username']) {
    $username = $_POST['username'];
} else {
    echo "Username '" . htmlentities($_POST['username']) . "' inválido.";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.