Foros del Web » Programando para Internet » Javascript »

Expresion Regular para validar password

Estas en el tema de Expresion Regular para validar password en el foro de Javascript en Foros del Web. Hola, Necesito hacer una validacion de un campo ingresado, y la debo hacer con expresiones regulares. Lo que necesito es que el texto a validar ...
  #1 (permalink)  
Antiguo 25/10/2003, 09:22
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mercedes
Mensajes: 92
Antigüedad: 22 años, 3 meses
Puntos: 0
Expresion Regular para validar password

Hola,
Necesito hacer una validacion de un campo ingresado, y la debo hacer con expresiones regulares.
Lo que necesito es que el texto a validar deba:

*Contener al menos 1 digito
*Contener al menos 1 letra (de la 'a' a la 'Z')
*Contener al menos 8 caracteres y hasta 20 inclusive

Ej:1234567a
Ej:abcdef1ga

Me estoy volviendo loco para hacerla y no lo puedo conseguir.
Si alguien me puede dar una mano, desde ya agradecido.


Saludos,
Andrés
  #2 (permalink)  
Antiguo 26/10/2003, 02:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm Esto sería; "alfanumerico de 8 a 20 digtos" .. o todo numeros .. o todo letras .. o numeros y letras.

^[a-zA-Z0-9]{8,20}*$

Y que tenga obligatoriamente un nº y una letra .. (probando y hechandole imaginación .. es problable que no funcione):

^[([a-z]{1}|[0-9]{1})]{8,20}*$

(por si no lo conces) ..
> el [] define rangos ..
> | = OR (o una cosa . o la otra)
> () grupos
> {nº,nº} repeticiones . minimo y max.
> ^ principio cdena
> $ fin cadena
> * no recuerdo ahora.

Creo que si te pasas por foros de Perl te orientarán mejor .. No obstante si mal no recuerdo las expresiones regulares nacieron por allá...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 26/10/2003 a las 03:01
  #3 (permalink)  
Antiguo 26/10/2003, 05:26
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola, RENZO.

He conseguido que controle el mínimo de un número y una letra, me ha faltado lo del número de caracteres:

/[0-9]{1,}[A-Za-z]{1,}/g

Espero que te sirva de ayuda. Saludos
  #4 (permalink)  
Antiguo 26/10/2003, 09:23
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mercedes
Mensajes: 92
Antigüedad: 22 años, 3 meses
Puntos: 0
Cluster:
La ER da error de sintaxis, le saque el * que indica que lo anterior puede aparecer cero o mas veces y no se puede poner al lado de un indicador de rango {,} y tambien le saque los corchetes principales [], pero no funciona ya que me permite ingresar todas letras.

JavierB:
La ER valida ok solo si primero esta el nº y despues la letra.


La verdad que esta ER que necesito es bastante complicada, pero bueno no me queda otra.

Desde ya muchas gracias por su tiempo, seguiré intentando.

Saludos.
  #5 (permalink)  
Antiguo 26/10/2003, 11:34
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola de nuevo.

Evidentemente tienes razón, RENZO. Solo valida si tienes el número al principio o en medio, pero no al final. A ver si con esto podemos avanzar un poco:

/(([0-9]{1,}[A-Za-z]{1,})|[0-9]$)/g

Espero que termines consiguiendolo. Saludos,
  #6 (permalink)  
Antiguo 26/10/2003, 11:52
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Perdon, eso tampoco sirve. Validaría igual si pones solo un número. Prueba con esto otro:

/(([0-9]{1,}[A-Za-z]{1,})|[A-Za-z][0-9]$)/g;

Espero acertar con alguna de estas. Saludos,
  #7 (permalink)  
Antiguo 26/10/2003, 12:03
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mercedes
Mensajes: 92
Antigüedad: 22 años, 3 meses
Puntos: 0
JavierB:

Le hice unos cambios a la ultima ER que mandaste:

(([\d]+[A-Za-z]+)|[A-Za-z]+[\d]+$)

reemplaze el 0-9 por \d y el {1,} por el + que creo que son equivalentes, para simplificarla un poco, tambien le agregue dos '+' en el ultimo grupo y aparentemente ahora acepta al menos un nº y al menos una letra. Faltaría validar la cantidad total, ya probe poniendole {8,20} al final esperando que funque, pero no iba a ser tan facil, eso lo unico que hace es validar que existan enre 8 y 20 coincidencias de un nº y una letra algo asi como: a1b2aa3d4d5f6c7e8 , que no sirve.


¿Que usas para probar las ER?
  #8 (permalink)  
Antiguo 26/10/2003, 13:20
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Rehola.

Lo de \d me lo apunto para futuras ocasiones. Para probar las ER uso una sencilla página:
Código PHP:
<html>
<
head>
<
script>
function 
validar(texto) {
    
patron=/d/g;
    
alert(patron.test(texto));
}
</script>
</head>

<body bgcolor="#FFFFFF" text="#000000">
<input type="text" id="pru">
<input type="button" onClick="validar(pru.value)">
</body>
</html> 
Saludos,
  #9 (permalink)  
Antiguo 26/10/2003, 14:43
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mercedes
Mensajes: 92
Antigüedad: 22 años, 3 meses
Puntos: 0
Ah, yo uso algo muy parecido, pero un poco mas complejo, ya que puedo validar las expresiones a medida que las voy modificando.

<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>Prueba de Expresiones Regualres</TITLE>
<!--www.elplanetasoft.com.ar-->
</HEAD>
<BODY >
<SCRIPT LANGUAGE=jscript>
<!--
function pru(){
try{

texto=dep2.innerText
pat = text2.value
campo = new RegExp(pat,"gi")
enc = campo.exec(texto)
dep.value = enc
}catch(e){
dep.value=e.description
}
}
-->
</SCRIPT>

<P>expresion<INPUT id=text2 name=text2 value='[abc]' onkeyup="pru()" style="FONT-WEIGHT: bold; FONT-SIZE: x-small; WIDTH: 424px; FONT-FAMILY: verdana; HEIGHT: 29px" size ="53"></P>
<P>Resultado<BR><INPUT id=dep name=text3 style="WIDTH: 790px; HEIGHT: 22px" size=100><BR>Texto a validar<BR><TEXTAREA id=dep2 onkeyup=pru() style="WIDTH: 539px; HEIGHT: 461px" rows=22 cols=58>abcdef</TEXTAREA></P>
</BODY>
</HTML>
  #10 (permalink)  
Antiguo 27/10/2003, 13:39
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Ajajá. Es buena idea. Es lo bueno de los Foros. Se aprende también cuando se contesta a otros.

Saludos,
  #11 (permalink)  
Antiguo 13/01/2004, 17:20
 
Fecha de Ingreso: febrero-2002
Ubicación: Lima
Mensajes: 48
Antigüedad: 22 años, 2 meses
Puntos: 0
Acabo de descubir las expresiones regulares en JavaScript.
Yo las aprendí en un curso en la unversidad, así que agrego algo que quedo en duda por ahí:

(por si no lo conces) ..
> el [] define rangos ..
> | = OR (o una cosa . o la otra)
> () grupos
> {nº,nº} repeticiones . minimo y max.
> ^ principio cdena
> $ fin cadena

> * no recuerdo ahora.

Yo si recuerdo:

Un asterisco (*) significa que la cadena debe estar presente de ninguna vez a infinitas. Es decir N = 0, 1, 2,.......infinito.

Un símbolo de suma (+) en cambio significa que la parte a la que se refiere (igual que en el caso anterior) debe estar presente POR LO MENOS UNA VEZ....hasta el infinito.
O sea: n = 1, 2, 3,.....infinito.

Espero que sea útil.

Demis E.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 15:41.