Cuando inicie este articulo no buscaba que nombre ponerle ahora que ya decidi que nombre ponerle no se como empezar a explicarlo :P. Es broma.

Vamos a iniciar. Este articulo surgio de un pequeño script que tuve que desarrollar para la validacion de un formulario y me tope con dos cuestiones si usar el objero String con su funcion match o usar el Objeto RegExp con la funcion test. Ahora bien mejo vamos a ver el script.

Este script valida que la contraseña sea de 5 a 20 caracteres y que la cadena sea alfanumerica y que no contenga espacios.

Bien he aqui el script usando match.

  1. function validPass(valor){
  2. //creo mi expresion regular
  3.     var RegExPattern = /(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{5,20})$/;
  4. //este alert es para testear la funcion
  5. alert(valor.match(RegExPattern));
  6.     if (valor.match(RegExPattern)) {
  7.         return true;
  8.     }else{
  9.         return false;
  10.     }
  11.  
  12.  }

Bien si corremos el script mandandolo a llamar como validPass(«mipass») me devuelve un null en el alert y la funcion me devulve un false si la mando a llamar asi validPass(«mipass123») me devuelve mipass123,mipass123 y la funcion me devuelve un true.

  1. function validPass(valor){
  2.  
  3.     var RegExPattern = /(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{5,20})$/;
  4.  
  5.     alert(RegExPattern.test(valor));
  6.     if (RegExPattern.test(valor)) {
  7.         return true;
  8.     }else{
  9.         return false;
  10.     }
  11.  
  12.  }

Ahora lo mismo pero usando la cadena como expresion regular y llamando la funcion test bien mandemosla a llamar como anteriormente validPass(«mipass») me devuelve ahora false en el alert y la funcion me devulve un false si la mando a llamar asi validPass(«mipass123») me devuelve true y la funcion me devuelve un true.

Entonces creo que si hay diferencia y esta tanto en el nombre de las funciones como en los valores que retornan aunque los dos hacen lo que quiero, que es validar que la contraseña cumpla con los requisitos.