Funções para validação alfanumérica de strings em Javascript

Uma série de funções de string para validar se um string tem ou não números e caracteres, maiúsculas e minúsculas.

Por Miguel Angel Alvarez - Tradução de JML


Publicado em: 14/7/08
Valorize este artigo:
Criei uma série de funções de string para realizar umas comprovações sobre cadeias de caracteres, que vou utilizar mais adiante em um script mais complexo. Começo explicando estas funções soltas, que talvez tenham utilidade aos leitores. Também com a intenção de apresentar pouco a pouco a complexidade de meu objetivo final. As funções de validação de strings servem para saber se as cadeias têm ou não números, letras, letras maiúsculas e minúsculas. São uma série de funções bem simples e parecidas entre si, que fazem uso dos métodos da classe string de Javascript.

Estas funções simplesmente fazem o percorrido pelo string em busca de caracteres de um determinado tipo. Fazem o percorrido completo por todo o string até que encontram um caractere do tipo buscado, de modo que se possa saber com certeza se há ou não caracteres desse tipo. Veremos a seguir as diferentes funções:

Saber se o string contém caracteres numéricos

Esta função recebe um string e devolve 1 se se encontram caracteres numéricos e 0 se não se encontram.

var numeros="0123456789";

function tem_numeros(texto){
   for(i=0; i<texto.length; i++){
      if (numeros.indexOf(texto.charAt(i),0)!=-1){
         return 1;
      }
   }
   return 0;
}


Criamos primeiro uma variável global com os números possíveis, do 0 ao 9, que queremos buscar. Utilizaremos essa variável dentro da função.

A função faz um percorrido a todos os caracteres do string. Para cada um se comprova se está ou não dentro da variável números, criada anteriormente.

Se estiver, se devolve 1 (como se executa o return, se sai da função devolvendo o valor 1).

Se não estiver, então se fará o percorrido do string, caractere a caractere, até o final. Então, se termina o loop e se devolve 0.

Esta função pode ser provada com estas sentenças:

alert(tem_numeros("ASAS1"));
alert(tem_numeros("2asasasas"));
alert(tem_numeros("asas2sG"));
alert(tem_numeros("a...."));
alert(tem_numeros("A22323G2.12"));


Podemos ver o exemplo em funcionamento em uma página a parte.

Saber se um string contém letras

Vejamos uma função muito similar, para saber se um string contém um caractere que seja letra, valendo tanto as maiúsculas como minúsculas.

var letras="abcdefghyjklmnopqrstuvwxyz";

function tem_letras(texto){
   texto = texto.toLowerCase();
   for(i=0; i<texto.length; i++){
      if (letras.indexOf(texto.charAt(i),0)!=-1){
         return 1;
      }
   }
   return 0;
}


O algoritmo é praticamente o mesmo que a função anterior. Primeiro, criamos um string com todas as letras do alfabeto. Logo, fazemos um percorrido buscando em cada um dos caracteres do string recebido por parâmetro uma das letras do alfabeto.

A única particularidade é a chamada ao método toLowerCase(), para converter o texto que se recebe por parâmetro a minúsculas e que a busca de letras não tenha em conta se são minúsculas ou maiúsculas (já que só buscamos se o string contém letras).

Podemos provar o string com estas linhas de código:

alert(tem_letras("1"));
alert(tem_letras("22323232s"));
alert(tem_letras("22323232sf"));
alert(tem_letras("a2232323"));
alert(tem_letras("A22323G2.12"));


Podemos ver o exemplo em funcionamento aqui.

Saber se um string tem letras minúsculas

Aqui vemos a função para comprovar se um string tem caracteres em minúsculas. É muito parecida as que vimos anteriormente.

var letras="abcdefghyjklmnopqrstuvwxyz";

function tem_minusculas(texto){
   for(i=0; i<texto.length; i++){
      if (letras.indexOf(texto.charAt(i),0)!=-1){
         return 1;
      }
   }
   return 0;
}


Com sua bateria de provas:

alert(tem_minusculas("1"));
alert(tem_minusculas("22323232s"));
alert(tem_minusculas("22323232sf"));
alert(tem_minusculas("a2232323"));
alert(tem_minusculas("A22323G2.12"));


Pode-se executar aqui.

Comprovar se um string tem letras maiúsculas

Agora veremos a função para ver se um string tem letras maiúsculas. É igual que a anterior, simplesmente temos uma cadeia com todas as letras em maiúscula para buscar no texto recebido por parâmetro.

var letras_mayusculas="ABCDEFGHYJKLMNOPQRSTUVWXYZ";

function tem_maiusculas(texto){
   for(i=0; i<texto.length; i++){
      if (letras_maiusculas.indexOf(texto.charAt(i),0)!=-1){
         return 1;
      }
   }
   return 0;
}


Estas poderiam ser as provas para comprovar o funcionamento.

alert(tem_maiusculas("1"));
alert(tem_maiusculas("22323232s"));
alert(tem_maiusculas("22323232sG"));
alert(tem_maiusculas("a2232323"));
alert(tem_maiusculas("A22323G2.12"));


Pode ver em funcionamento o script no seguinte link.

Utilizaremos estas funções no seguinte artigo, no qual vou explicar a criação de um sistema para mostrar a segurança de uma chave, para dizer o quão segura é em função do número de caracteres, se tem números e letras, se tem maiúsculas e minúsculas, etc.





Comentários do artigo
Foram enviados 5 comentários ao artigo
5 comentários não revisados
0 comentários revisados

Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato