Autor
|
Tema: Expresión regular (Leído 20,776 veces)
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Ups, perdon, error de copiar y pegar del editor Ahi esta corregida, ahora la explico (y creo que hare un cambio mas )
|
|
|
En línea
|
|
|
|
IWKY
Desconectado
Mensajes: 272
|
Ups, perdon, error de copiar y pegar del editor Ahi esta corregida, ahora la explico (y creo que hare un cambio mas ) Where is it??? Se te ha olvidado poner la expresión, jajjaja
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
emm....esta modificado en el mensaje anterior ^(?![.,])(?:[\w!#$%&\'*+\/=?^_`{|}~\-]+(?:[.,][\w!#$%&\'*+\/=?^_`{|}~\-]+)*|(?>\".+\"))+(?![.,])@(?>\[(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2})\.){3}(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2}))\]|(?![.,])[\w!#$%&\'*+\/=?^_`{|}~\-]+(?:[.,][\w!#$%&\'*+\/=?^_`{|}~\-]+)*(?:\.[a-zA-Z]+))$
|
|
« Última modificación: 2 Febrero 2010, 15:03 pm por raul338 »
|
En línea
|
|
|
|
IWKY
Desconectado
Mensajes: 272
|
Bueno...... ahora si te digo que no me valida los correos, que me dices?? jejej $exp = "/^(?![.,])(?:[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*|(?>\".+\"))+(?![.,])@(?>\[(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2})\.){3}(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2}))\]|(?![.,])[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*(?:\.[a-zA-Z]+)(?![.,]))$/"; $array_err[2] = $key; }
Si el correo es correcto, $array_err[2] no debería de contener el valor $key y en cambio si lo contiene, ¿Hay algo mal?
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
(?![.,]) -> no debe empezar con . o , (?: -> Grupo: texto entre comillas o texto simple con simbolos [\w!#$%&'*+/=?^_`{|}~\-]+ -> Letras o simbolos (?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)* -> ., no pueden estar consecutivos | (?>\".+\") -> Texto entre comillas )+ -> Se pueden repetir varias veces (?![.,]) -> no puede terminar con . o , @ -> simbolo arroba (?> -> Grupo: puede ser una IP o texto con simbolos \[(? ?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2})\.){3}(? ?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2}))\] | ->Texto con simbolos... (?![.,]) -> No puede empezar con . o , [\w!#$%&'*+/=?^_`{|}~\-]+ -> letras y simbolos (?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)* -> ., no consecutivos (?:\.[a-zA-Z]+) -> Tiene que terminar como dominio (aca es generico, acepta cualquier cosa...) (?![.,]) -> Tampoco puede terminar con . o , ) Y la explicacion de la expresion regular de IP: (?: -> Grupo 1: (?> -> Aca separamos, el maximo de cada grupo de una IP es 255 2 -> Si empieza con 2... (?> 5[0-5] -> y sigue con 5, que pueda hasta 55 | [0-4]?\d) -> caso contrario, que sea de 0 a 49 | 1? -> o puede ser que sea 100 o menor \d{1,2} -> numero...de no mas de 2 cifras ) \. -> un punto ){3} -> se debe repetir 3 veces la captura del grupo (?: -> Aca se repite exactamente el mismo grupo, pero sin el punto final (?> -> Aca separamos, el maximo de cada grupo de una IP es 255 2 -> Si empieza con 2... (?> 5[0-5] -> y sigue con 5, que pueda hasta 55 | [0-4]?\d) -> caso contrario, que sea de 0 a 49 | 1? -> o puede ser que sea 100 o menor \d{1,2} -> numero...de no mas de 2 cifras ) )
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.Bueno...... ahora si te digo que no me valida los correos, que me dices?? jejej $exp = "/^(?![.,])(?:[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*|(?>\".+\"))+(?![.,])@(?>\[(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2})\.){3}(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2}))\]|(?![.,])[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*(?:\.[a-zA-Z]+)(?![.,]))$/"; $array_err[2] = $key; }
Si el correo es correcto, $array_err[2] no debería de contener el valor $key y en cambio si lo contiene, ¿Hay algo mal? Es porque estas poniendo mal la expresion, si la pones entre comillas no debes poner los "/" de inicio y cierre o pones $exp = "^(?![.,])(?:[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*|(?>\".+\"))+(?![.,])@(?>\[(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2})\.){3}(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2}))\]|(?![.,])[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*(?:\.[a-zA-Z]+)(?![.,]))$";
o sino $exp = /^(?![.,])(?:[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*|(?>\".+\"))+(?![.,])@(?>\[(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2})\.){3}(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2}))\]|(?![.,])[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*(?:\.[a-zA-Z]+)(?![.,]))$/;
|
|
|
En línea
|
|
|
|
IWKY
Desconectado
Mensajes: 272
|
Probe como dices y sigue sin funcionar, y otras expresiones si que me funcionan, pego un trozo más grande del script, y así de paso puedes ver las otras expresiones, por si estuvieran mal, jejej Si le quito la / de inicio y fin, no funciona, por ejemplo en la primera que valida nombres, si le quito la /, no funciona y si se la pongo si que funciona bien. foreach($_POST as $key => $value){ switch($key){ case "Nombre": $array_err[0] = $key; } break; case "Apellidos": $array_err[1] = $key; } break; case "Email": $exp = "^(?![.,])(?:[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*|(?>\".+\"))+(?![.,])@(?>\[(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2})\.){3}(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2}))\]|(?![.,])[\w!#$%&'*+/=?^_`{|}~\-]+(?:[.,][\w!#$%&'*+/=?^_`{|}~\-]+)*(?:\.[a-zA-Z]+)(?![.,]))$"; $array_err[2] = $key; } break; case "Password": case "Password1": if((empty($_POST['Password']) and empty($_PAST['Password1'])) or ($_POST['Password'] != $_POST['Password1'])){ $array_err[3] = $key; } break; case "Dni": $array_err[4] = $key; } $numero = substr($value, 0, -1); $letras = array("T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E"); $dni = $numero . $letras[$numero%23]; if($dni != $value){ $array_err[4] = $key; } break; case "Pais": $array_err[5] = $key; } break; case "CodigoPostal": $array_err[6] = $key; } break; case "Direccion": if(empty($value) or !preg_match("/^[a-zA-Z]+([\s-][a-zA-Z]+)*$/", $value)){ $array_err[7] = $key; } break; case "Ciudad": if(empty($value) or !preg_match("/^[a-zA-Z]+([\s-][a-zA-Z]+)*$/", $value)){ $array_err[8] = $key; } break; case "Provincia": if(empty($value) or !preg_match("/^[a-zA-Z]+([\s-][a-zA-Z]+)*$/", $value)){ $array_err[9] = $key; } break; case "Numero": $array_err[10] = $key; } break; case "Planta": $array_err[11] = $key; } break; case "Puerta": $array_err[12] = $key; } break; case "Telefono": $array_err[13] = $key; } break; } }
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Este es el codigo generado por el ReggexBuddy con el que edito mis expresiones regulares if (preg_match('/^(?![.,])(?:[\w!#$%&\'*+\/=?^_`{|}~\-]+(?:[.,][\w!#$%&\'*+\/=?^_`{|}~\-]+)*|(?>\".+\"))+(?![.,])@(?>\[(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2})\.){3}(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2}))\]|(?![.,])[\w!#$%&\'*+\/=?^_`{|}~\-]+(?:[.,][\w!#$%&\'*+\/=?^_`{|}~\-]+)*(?:\.[a-zA-Z]+))$/', $value)) { # Successful match } else { # Match attempt failed }
Referencia de porque lo hize asiexplicacion detallada de la expresionFijate si te funciona, yo ahora no puedo probar
|
|
« Última modificación: 20 Marzo 2010, 14:19 pm por raul338 »
|
En línea
|
|
|
|
IWKY
Desconectado
Mensajes: 272
|
Funciona perfecto, eres un maestro de las expresiones regulares, por lo que veo has añadido algunas \ para escapar las / y por lo demás esta igual, gracias, he aprendido mucho y me ha gustado debatir este tema contigo.
Un saludo.
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
jeje...son fascinante las expresiones regulares, y cada dia aprendo mas de ellas En este tema aprendi que existia el (?!...), que sirve que cancele el analisis si se cumple la condicion que esta dentro (en lugar de seguir avanzando como lo hacen otros )
|
|
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
Deberian haber unas cuantas pruebas, asi uno pasa un buen rato xD.
|
|
|
En línea
|
Mi madre me dijo que estoy destinado a ser pobre toda la vida. Engineering is the art of balancing the benefits and drawbacks of any approach.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con Expresión Regular
Desarrollo Web
|
Shell Root
|
4
|
4,421
|
10 Abril 2011, 22:26 pm
por Shell Root
|
|
|
Aplicar expresión regular en el resultado de un curl
PHP
|
Servia
|
3
|
3,695
|
28 Agosto 2011, 14:11 pm
por WHK
|
|
|
ayuda con una expresion regular :(
Programación General
|
Elemental Code
|
6
|
4,733
|
23 Mayo 2012, 04:10 am
por Elemental Code
|
|
|
duda sobre patron de expresion regular
Programación General
|
MagnusIvanovich
|
5
|
3,486
|
14 Marzo 2013, 20:11 pm
por 1mpuls0
|
|
|
Ayuda Expresion Regular
Ingeniería Inversa
|
macmaikel
|
2
|
2,661
|
11 Junio 2013, 03:36 am
por macmaikel
|
|