Yii Framework Forum: Regla que identifique ciertos caracteres - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Regla que identifique ciertos caracteres Rate Topic: -----

#1 User is offline   akumaGouki 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 7
  • Joined: 24-May 12

Posted 24 May 2012 - 09:32 AM

Hola a todos!
Este es mi primer post en el foro. Bueno, sin mas que decir empiezo

Quiero que mi password del modelo incluya ciertos caracteres, ¿saben que regla debo aplicar?

trate con

array('CLAVE', 'required' ,'requiredValue' => 'hola'),


Pero solo permite que la clave sea "hola" y no que sea algo como "123hola"
concretamente quiero que el password tenga ciertos caracteres especiales.

Trate con pattern, pero no entendi muy bien este pattern que vi de ejemplo

public function caracteresEspeciales($attribute,$params)
	{
 
        $pattern = '/^(?=.*\d(?=.*\d))(?=.*[a-zA-Z](?=.*[a-zA-Z])).{5,}$/';  

 
    if(!preg_match($pattern, $this->$attribute))
      $this->addError($attribute, 'Tu password no es lo suficientemente complejo');
	  
	} 


Muchas gracias de antemano!
0

#2 User is offline   bluyell 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 201
  • Joined: 28-October 11

Posted 24 May 2012 - 09:56 AM

hola, en primer lugar te recomiendo que busques una pagina de "regexp tester", buscalo asi en google y saldran como 50 testers de expresiones regulares que te ayudaran.

De resto, la implementacion de tu funcion creada en Yii se aplica asi:

array('CLAVE','caracteresEspeciales') // sin el 'on', para que aplique en cualquier escenario donde toque modificarse la clave.
si tu metodo caracteresEspeciales no es llamado, quiza sea porque no has especificado una regla "safe" o "required" previamente para tu atributo.

por ultimo,

primero crea un caso de pruebas, como mejor gustes hacerlo, que evalue las diferentes combinaciones de claves que tus usuarios puedan ingresar, esto ultimo es para que te asegures que tu expresion regular esta bien hecha.

cuando dices: "Trate con pattern, pero no entendi muy bien este pattern que vi de ejemplo ", nadie dijo que las expresiones regulares sean faciles de digerir, por eso, te recomiendo arriba de primero que busques una herramienta de validacion de expresiones regulares, son gratuitas.
0

#3 User is offline   akumaGouki 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 7
  • Joined: 24-May 12

Posted 24 May 2012 - 10:01 AM

Vaya, muchas gracias por tu pronta respuesta
Enseguida busco lo que me dijiste

Con respecto al metodo, si lo implemente (se me olvidó aclararlo).

array('CLAVE', 'caracteresEspeciales'),


El problema es que no se lo que validaba con

$pattern = '/^(?=.*\d(?=.*\d))(?=.*[a-zA-Z](?=.*[a-zA-Z])).{5,}$/';  



Y casi que todos los pattern que he conseguido siguen esa formula que aun no comprendo bien.
Haré pruebas como me dijiste y expondré mis resultados

Gracias!
0

#4 User is offline   akumaGouki 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 7
  • Joined: 24-May 12

Posted 24 May 2012 - 10:18 AM

Listo, solucionado, con este pattern que consegui aca, funciona perfectamente webintenta.com/validacion-con-expresiones-regulares-y-javascript.html (no tiene hipervínculo porque aun no puedo postearlos)

	public function caracteresEspeciales($attribute,$params)
	{
	
	  $pattern ='/(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$/';
	 
    if(!preg_match($pattern, $this->$attribute))
      $this->addError($attribute, 
	  'Debe estar entre 8 y 10 caracteres, por lo menos un digito y un alfanumerico, sin caracteres especiales');
	  
	}



Recuerden colocar en rules()
array('CLAVE', 'caracteresEspeciales'),


Y recuerden que todos los pattern que consigan tienen que ponerle "/" al inicio y al final
Saludos!
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users