Funciones para validación alfanumérica de strings en Javascript

  • Por
Una serie de funciones de string para validar si un string tiene o no números y caracteres, mayúsculas y minúsculas.
He creado una serie de funciones de string para realizar unas comprobaciones sobre cadenas de caracteres, que voy a utilizar más adelante en un script más complejo. Comienzo explicando estas funciones sueltas, que quizás sirvan de utilidad a los lectores. También con la intención de presentar poco a poco la complejidad de mi objetivo final. Las funciones de validación de strings sirven para saber si las cadenas tienen o no números, letras, letras mayúsculas y minúsculas. Son una serie de funciones bien sencillas y parecidas entre si, que hacen uso de los métodos de la clase string de Javascript.

Estas funciones simplemente hacen el recorrido por el string en búsqueda de caracteres de un determinado tipo. Hacen el recorrido completo por todo el string hasta que encuentran un carácter del tipo buscado, de modo que se pueda saber seguro si hay o no caracteres de ese tipo. Veremos a continuación las distintas funciones:

Saber si el string contiene caracteres numéricos

Esta función recibe un string y devuelve 1 si se encuentran caracteres numéricos y 0 si no se encuentran.

var numeros="0123456789";

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


Hemos creado primero una variable global con los números posibles, del 0 al 9, que queremos buscar. Esa variable la utilizaremos dentro de la función.

La función hace un recorrido a todos los caracteres del string. Para cada uno se comprueba si está o no dentro de la variable numeros, creada con anterioridad.

Si estaba, se devuelve 1 (como se ejecuta el return, se sale de la función devolviendo el valor 1).

Si no estaba, entonces se hará el recorrido del string, carácter a carácter, hasta el final. Entonces se termina el bucle y se devuelve 0.

Esta función se puede probar con estas sentencias:

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


Podemos ver el ejemplo en marcha en una página aparte.

Saber si un string contiene letras

Veamos una función muy similar, para saber si un string contiene un carácter que sea letra, valiendo tanto las mayúsculas como minúsculas.

var letras="abcdefghyjklmnñopqrstuvwxyz";

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


El algoritmo es prácticamente el mismo que la función anterior. Primero hemos creado un string con todas las letras del alfabeto. Luego hacemos un recorrido buscando en cada uno de los caracteres del string recibido por parámetro una de las letras del alfabeto.

La única particularidad es la llamada al método toLowerCase(), para convertir el texto que se recibe por parámetro a minúsculas y así que la búsqueda de letras no tenga en cuenta si son minúsculas o mayúsculas (ya que sólo buscamos si el string contiene letras).

Podemos probar el string con estas líneas de código:

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


Podemos ver el ejemplo en marcha aquí.

Saber si un string tiene letras minúsculas

Aquí vemos la función para comprobar si un string tiene caracteres en minúsculas. Es muy parecida a las que hemos visto anteriormente.

var letras="abcdefghyjklmnñopqrstuvwxyz";

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


Con su batería de pruebas:

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


Lo podemos ejecutar aquí.

Comprobar si un string tiene letras mayúsculas

Ahora veremos la función para ver si un string tiene letras mayúsculas. Es igual que la anterior, simplemente que tenemos una cadena con todas las letras en mayúscula para buscar en el texto recibido por parámetro.

var letras_mayusculas="ABCDEFGHYJKLMNÑOPQRSTUVWXYZ";

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


Estas podrían ser las pruebas para comprobar el funcionamiento.

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


Puedes ver en funcionamiento el script en el siguiente enlace.

Estas funciones las utilizaremos en el siguiente artículo, en el que voy a explicar la creación de un sistema para mostrar la seguridad de una clave, para decir qué tan segura es en función del número de caracteres, si tiene números y letras, si tiene mayúsculas y minúsculas, etc.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Edgardo

25/8/2009
Gracias
Gracias buena rutina aunque veo mas eficiente si manejas codigos ascii para validar formularios...

Fredy

25/10/2012
i Latina.
Parece una broma pero les falta la i latina. (En ámbos casos).

abcdefghyjklmnñopqrstuvwxyz

ABCDEFGHYJKLMNÑOPQRSTUVWXYZ

Slds.

ifredyi

25/10/2012
i Latina
Que buena. (No me habia dado cuenta.)
---

Parece una broma pero les falta la i latina. (En ámbos casos).

abcdefghyjklmnñopqrstuvwxyz

ABCDEFGHYJKLMNÑOPQRSTUVWXYZ

Slds.

Guillermo Rmz P.

13/9/2013
Mejora mediante el uso de expresiones regulares
Es muy útil las funciones que mencionas pero creo que se puede hacer uso de la expresiones regulraes para facilitar esto.<br />
<br />
Sin entrar en tanto detalle las expresiones regulares son patrones que se definen y posteriormente los podemos usar en algunas de las funciones. Ejemplo:<br />
<br />
Para validar letras (Mayusculas de la A a la Z<br />
var ExpLetras= new RegExp(&quot;([A-Z])&quot;);<br />
var Cadena = &quot;cadena de texto que deseas comparar &quot; ;<br />
<br />
<br />
if(Cadena.match(pat_clave) ) <br />
{<br />
}<br />
else <br />
{<br />
}<br />
<br />
Para el caso que requieras validar números entonces cambias la Expresion Regular por esta: <br />
<br />
var ExpLetras= new RegExp(&quot;([0-9])&quot;);<br />
var Cadena = &quot;cadena de texto que deseas comparar &quot; ;<br />
<br />
Espero sea de utilidad <br />
<br />
Saludos Cordiales

rsrodrig

11/1/2016
Validación OK 100%. Gracias !
Excelentes las funciones para validar password.
Funcionaron a la perfección.
Muchas gracias !

berni

03/11/2017
Function tiene letras peta
Ponle esto a

var letras="aAAAaaaAAAAaaabcdefghyjklmnñopqrstuvwxyza";

Seguira retornando siempre 1. En vez de 10 o 15 o las que haya