La página de DriverOp

Viene de: Índice -> Programación

Repositorio de códigos JavaScript.


A lo largo de mi tarea como programador de páginas/aplicaciones webs hay cosas que son más o menos repetitivas y que en su momento les encontré una solución. En esta página expongo alguno de esas cosas que uso casi siempre a la hora de programar en JavaScript (formalmente ECMAScript) porque si son útiles para mi entonces podría serlo para alguien más.

1. Introducción.

Lo admito, JavaScript es un lenguaje que aprendí a la fuerza y todavía sigue sin gustarme. No es el primer lenguaje que aprendí a la fuerza pero en otros casos lo acepté voluntariamente más por conveniencia que por otra cosa. Por ejemplo PHP es otro lenguaje que no me gusta y aprendí a la fuerza pero invertí mi tiempo porque las alternativas (ASP y JSP) eran peores que PHP. Si quieres saber por qué, me preguntas. Sin embargo para JavaScript no existen alternativas si quieres tener cierta sofisticación en sitios webs pues es el único lenguaje que está soportado por los grandes navegadores sin recurrir a plugins ni cosas raras.

Los códigos que a continuación expongo no están organizados de ninguna manera debido a que en primera son pocos (aún) y en segunda no sabría cómo organizarlos.

2. Validar un correo electrónico.

Donde "validar" significa verificar que una cadena de caracteres tiene el formato propio de una dirección de correo electrónico y no que el email en sí exista realmente.

function ValidarCorreo(email){
   var formato = /^([\w-\.\+])+@([\w-]+\.)+([a-z]){2,4}$/;
   var comparacion = formato.test(email);
   return comparacion;
   }

El parámetro email debe ser una cadena de caracteres, la función devuelve true en caso que email sea una dirección de correo electrónico bien formada o false en caso contrario. Los espacios en blanco por delante y/o por detrás de la cadena invalidan la cadena. Permite que el nombre de usuario (lo que está a la izquerda del "@") contenga uno o más puntos y/o uno o más símbolos suma ("+"), este último es apropiado para las direcciones "virtuales" de Google Mail (GMail). Mientras que el dominio (lo que está a la derecha del "@") no puede comenzar con punto y puede contener tantos subdominios como se quiera siempre que el último, es decir, el dominio de mayor nivel o TLD (Top Level Domain) tenga 2 o 3 o 4 caracteres nada más. En ningún caso acepta caracteres especiales (incluyendo vocales acentuadas).

Nota especial: este código podría volverse obsoleto cuando se implemente el estandar HTML5 ya que en ese estandar habrá un tipo "email" y sería el propio navegador quien haga la comprobación.

3. Validación trivial del formato de una fecha.

Aquí lo que se pretende no es determinar si la fecha ingresada es válida sino que el formato tipo fecha es correcto.

Antes hay que establecer qué se considera como formato correcto, en este caso será cualquier cadena de caracteres que comience con uno o dos dígitos seguidos por una barra "/" o un guión "-", al cual le siguen uno o dos dígitos seguidos por una barra "/" o un guión "-", al cual le siguen cuatro dígitos y nada más. Esto es compatible con el formato "dd/mm/aaaa" o "dd-mm-aaaa" (donde "dd" es el día, "mm" el mes y "aaaa" es el año). Los lugares para "dd" en caso de tener dos dígitos, el primero solo puede ser 0,1,2 o 3. Los lugares para "mm" en caso de tener dos dígitos, el primero solo puede ser 0 o 1.

function ValidarFecha(fecha) {
   var formato = /^[0-3]?[0-9](-|\/)[0-1]?[0-9](-|\/)[0-9]{4}$/;
   var comparacion = formato.test(fecha);
   return comparacion;
   }

El parámetro fecha es la cadena de caracteres a validar, la función devuelve true en caso que fecha tenga el formato correcto, false en caso contrario. Como se ha dicho esta función valida el formato y no la fecha en sí.

Por ejemplo:

30/12/2009 -> true (y fecha válida).
3/13/2209 -> true (y fecha no válida).
4/12/2009 -> true (y fecha válida).
40/12/2009 -> false (y fecha no válida).
09/02/2009 -> true (y fecha válida).
9/2/2009 -> true (y fecha válida).
9/2/09 -> false (y fecha válida si consideramos el año 9 de la EC).
09/42/2009 -> false (y fecha inválida).
33/15/2009 -> true (y fecha inválida).

Ahora bien, si no se valida la fecha en sí ¿por qué usar esta función?, pues porque evita llamar a una función más complicada para validar la fecha cuando se puede prevenir eso simplemente mirando el formato de la fecha.

Nota: para permitir el ingreso del año en dos o cuatro cifras cambiar {4} en la expresión regular por {2,4} aunque esto dará como buena una fecha con tres dígitos en el año también.

4. Quitar espacios por delante y por detrás de una cadena (función "trim()").

Lamentablemente JavaScript no tiene la función trim() que sí tienen otros lenguajes tal como PHP o Delphi. Esta función sirve para quitar los espacios y caracteres no imprimibles por delante y por detrás de una cadena, de forma tal que una cadena como:

" esto es una cadena   "

Quedaría como:

"esto es una cadena"

Para solventar esto y siguendo la convención de orientación a objetos de JavaScript, agrega esto bien al inicio de tu script:

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, "");    };

Lo que se hace aquí es agregar un método nuevo a la clase String llamado trim. Todas las cadenas de caracteres en JavaScript son en realidad un objeto de tipo string, por lo tanto, para usar este método hay que invocarlo como se hace con cualquier método de clase:

var cadena = " esto es una cadena ";
var cadenatruncada = cadena.trim();
alert(cadenatruncada);

También se puede usar directamente como:

var cadena = " esto es una cadena ";
alert(cadena.trim());

Otra ventaja de agregar trim() como método de clase es que puede heredar otros métodos de la clase padre, así también se pueden invocar otros métodos a partir de este método, por ejemplo length:

var cadena = " esto es una cadena ";
alert(cadena.length); // largo de la cadena sin truncar
alert(cadena.trim().length); // largo de la cadena truncada

Diego Romero - .