elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
4 Febrero 2012, 12:58  

+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP
| | | |-+  Expresión regular
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Expresión regular  (Leído 6,241 veces)
IWKY

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Expresión regular
« en: 23 Enero 2010, 22:44 »

Hola, he encontrado esta expresión regular para validar direcciones de correos electrónicos por la web, pero creo que no validaría bien todos los correos electrónicos.

Original:
Código:
'/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/'

Creo que así funcionaría mejor, ¿qué decís?
Corregido:
Código:
'/^[^0-9][a-zA-Z0-9_]+([.][-][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][-][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/'

NOTA: fijaos que he añadido [-] después de [.], es que no se como remarcarlo para que se vea claro.



En línea

Por internet libre http://red-sostenible.net/
El mejor momento de Dragon Ball Z --> Aqui
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 893



Ver Perfil
Re: Expresión regular
« Respuesta #1 en: 23 Enero 2010, 23:23 »

Aver, pon ejemplo un de un correo, porque usas tantas cosas innecesarias que creo que no es un correo común xD.

Poner un ejemplo del correo y decir que parte del correo necesitas sacar...

Porque estas gastando recursos innecesarios.

Saludos.


En línea





Un buen artista copia ideas, un gran artista roba ideas.
No al Copy & Paste
IWKY

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Expresión regular
« Respuesta #2 en: 24 Enero 2010, 00:00 »

No es que quiera sacar una parte concreta, simplemente validar un correo, vamos que no pongan caracteres extraños, un ejemplo seria...

esto.esun_ejemplo.de-correo@deun-servior.com.com.es
En línea

Por internet libre http://red-sostenible.net/
El mejor momento de Dragon Ball Z --> Aqui
raul338


Desconectado Desconectado

Mensajes: 2.192


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Expresión regular
« Respuesta #3 en: 24 Enero 2010, 00:03 »

Esa expresion regular no funcionaria bien, porque estas obligando al usuario a tener un mail con ".-" o sin el, debias ponerlo en el mismo delimitador "[.-]", a parte tambien separa el "_" de las letras, porque funcionaria con "raul___338@elchacker.net" jaja xD

Código:
'/^[^0-9][a-zA-Z0-9_]+([.-_][a-zA-Z0-9]+)*[@][a-zA-Z0-9_]+([.-][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/'

Ahi practicamente deberia funcionar con todos ;)


Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje

Con ese correo funciona, ya me fije :P
« Última modificación: 24 Enero 2010, 00:04 por raul338 » En línea

IWKY

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Expresión regular
« Respuesta #4 en: 24 Enero 2010, 00:09 »

Gracias, es que me estoy iniciando en las expresiones regulares y aún no se muy bien como funcionan del todo.

Otra consulta, los correos electrónicos pueden tener las siguientes formas o alguna combinación de ellas ¿Cual de estas combinaciones no es correcta?:

ejemplo_correo-@server.com
ejemplo@mi_server-raro.com
-ejemplo-@server.com
123server@123.com
user_@_server.com
_user_@_server_.com


Vamos en definitiva que no se donde mirar como se rige un correo electrónico.
« Última modificación: 24 Enero 2010, 00:22 por IWKY » En línea

Por internet libre http://red-sostenible.net/
El mejor momento de Dragon Ball Z --> Aqui
raul338


Desconectado Desconectado

Mensajes: 2.192


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Expresión regular
« Respuesta #5 en: 24 Enero 2010, 00:18 »

entonces haz una expresion mas simple
Código:
^[\w\.\-\_]+\@[\w\.\-\_]+\.\w{2,4}$

para que te vas a romper la cabeza intentando poner miles de formas raras??? .... esa expresion funciona con todos los mails que pusiste
pero ... (segun que yo sepa) estos correos no son validos:

123server@123.com
_user_@_server_.com
-ejemplo-@server.com

y en caso de que quieras una expresion regular que no valide esos correos, aqui tienes una:

Código:
^[a-zA-Z][\w\.\-\_]+\@[\w\.\-\_]+\.\w{2,4}$
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 893



Ver Perfil
Re: Expresión regular
« Respuesta #6 en: 24 Enero 2010, 00:29 »

Código:
/([a-z0-9_.-]+)@([a-z0-9_-]+)\.\w{2,3}/i
Bueno esta es la mía, le pongo el operador i al final que dice que ignore el uso de mayúscula y minúscula.

Tampoco es necesario poner
Código:
[\w\.\-\_]
si con
Código:
[\w.-_]
Estas haciendo lo mismo.
La de raul338  parece una exprecion regular ofuscada jajaja.

Saludos.
« Última modificación: 24 Enero 2010, 00:31 por yoyahack » En línea





Un buen artista copia ideas, un gran artista roba ideas.
No al Copy & Paste
IWKY

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Expresión regular
« Respuesta #7 en: 24 Enero 2010, 00:31 »

entonces haz una expresion mas simple
Código:
^[\w\.\-\_]+\@[\w\.\-\_]+\.\w{2,4}$

para que te vas a romper la cabeza intentando poner miles de formas raras??? .... esa expresion funciona con todos los mails que pusiste
pero ... (segun que yo sepa) estos correos no son validos:

123server@123.com
_user_@_server_.com
-ejemplo-@server.com

y en caso de que quieras una expresion regular que no valide esos correos, aqui tienes una:

Código:
^[a-zA-Z][\w\.\-\_]+\@[\w\.\-\_]+\.\w{2,4}$

Bueno había un error en mi ultimo post, ya esta corregido, en cuanto a la segunda expresión
Código:
^[a-zA-Z][\w\.\-\_]+\@[\w\.\-\_]+\.\w{2,4}$
Hay un par de cosas que no tengo claro,  a ver si me puedes ayudar.
^ -> inicio de la cadena
[a-zA-Z] -> solo contiene letras minúsculas y mayúsculas
[\w\.\-\_]+ -> se pueden repetir 1 o más veces caracteres alfanumericos, el ., el - y el _, ¿La \w no engloba a [a-zA-Z0-9_]? si es así sobra el \_
\@ -> caracter arroba
[\w\.\-\_]+ -> Lo mismo que en el de arriba
\. -> caracter .
\w{2,4} -> Dominio de 2 a 4 caracteres, ¿Si \w es alfanumerico incluyendo _? validaría dominios erróneos, ¿no?
$ -> Fin de la cadena
« Última modificación: 24 Enero 2010, 00:44 por IWKY » En línea

Por internet libre http://red-sostenible.net/
El mejor momento de Dragon Ball Z --> Aqui
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 893



Ver Perfil
Re: Expresión regular
« Respuesta #8 en: 24 Enero 2010, 00:40 »

Esta exprecion no es muy confiable:
Código:
^[a-zA-Z][\w\.\-\_]+\@[\w\.\-\_]+\.\w{2,4}$
Ya que primero dice que si al principio aparecen palabras en mayuscula o minuscula y si al principio no hay palabras si no numero no funcionara la exprecion regular como deberia de ser.
En línea





Un buen artista copia ideas, un gran artista roba ideas.
No al Copy & Paste
IWKY

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Expresión regular
« Respuesta #9 en: 24 Enero 2010, 00:46 »

O sea una entrada de este estilo
Código:
123mail@mail.com
, para eso supondo que se debería de añadir lo siguiente al inicio [^0-9]
quedando así las expresión
Código:
^[^0-9][a-zA-Z][\w\.\-\_]+\@[\w\.\-\_]+\.\w{2,4}$
En línea

Por internet libre http://red-sostenible.net/
El mejor momento de Dragon Ball Z --> Aqui
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 893



Ver Perfil
Re: Expresión regular
« Respuesta #10 en: 24 Enero 2010, 00:53 »

Bueno, si el mail comienza con letra tu exprecion falla. aqui explico la mia.
Código:
^/[a-z0-9_.-]+\@[a-z0-9._-]+\.\w{2,3}$/i
Primero indico que la cadena debe comenzar con letras, numero, guion y punto y indico que pueden aparecer una o mas veces. luego con el @ indico que hasta hay llegara o si no se toma todo, luego indico que despues del @ pueden haber, letras, numero, puntos y guion.luego indico el punto  y despues indico que despues del punto puede aparecer, numeros, letras y guion y que debe tener minimos 2 caracter y maximo 3 y que solo debe estar al final.
En línea





Un buen artista copia ideas, un gran artista roba ideas.
No al Copy & Paste
raul338


Desconectado Desconectado

Mensajes: 2.192


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Expresión regular
« Respuesta #11 en: 24 Enero 2010, 01:07 »

Esta exprecion no es muy confiable:
Código:
^[a-zA-Z][\w\.\-\_]+\@[\w\.\-\_]+\.\w{2,4}$
Ya que primero dice que si al principio aparecen palabras en mayuscula o minuscula y si al principio no hay palabras si no numero no funcionara la exprecion regular como deberia de ser.

Lee bien :P dije que a mi no me parece que un mail deberia empezar con numeros o simbolos, por eso puse que empieze con una letra y despues lo que sea :)
Bueno, si el mail comienza con letra tu exprecion falla. aqui explico la mia.
Código:
^/[a-z0-9_.-]+\@[a-z0-9._-]+\.\w{2,3}$/i
Primero indico que la cadena debe comenzar con letras, numero, guion y punto y indico que pueden aparecer una o mas veces. luego con el @ indico que hasta hay llegara o si no se toma todo, luego indico que despues del @ pueden haber, letras, numero, puntos y guion.luego indico el punto  y despues indico que despues del punto puede aparecer, numeros, letras y guion y que debe tener minimos 2 caracter y maximo 3 y que solo debe estar al final.
es identica a mi segunda opcion (la mas simple)
entonces haz una expresion mas simple
Código:
^[\w\.\-\_]+\@[\w\.\-\_]+\.\w{2,4}$

para que te vas a romper la cabeza intentando poner miles de formas raras??? .... esa expresion funciona con todos los mails que pusiste

Y aca esta mejorada, no permite simbolos consecutivos, (aunque esto no lo probe, deberia funcionar):

Código:
^[\w]+([.-_][\w]+)*\@[\w]+([.-_][\w]+)*\.\w{2,4}$

^ -> inicio de linea
[\w]+ -> Empieza si o si con una o mas letras o numeros
([.-_][\w]+)* -> puede haber uno o mas grupos de la siguente forma: (simbolo)(letroa o numeros)
\@ -> Simbolo Arroba
[\w]+([.-_][\w]+)* -> Idem. Arriba
\.\w{2,4} -> un punto y el final de la direccion (entre 2 y 4, ej: .ar, .net, .com, etc)
$ -> fin de linea

la \w es simplemente valores alfanumericos, no simbolos :P
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 893



Ver Perfil
Re: Expresión regular
« Respuesta #12 en: 24 Enero 2010, 01:21 »

Naaa la mía no es indentica a la tuya, la mía es mejor jajaja (broma).
Ps eso, el $  indica que algo debe estar al final de la cadena, no indica el final de la cadena.
« Última modificación: 24 Enero 2010, 01:38 por yoyahack » En línea





Un buen artista copia ideas, un gran artista roba ideas.
No al Copy & Paste
raul338


Desconectado Desconectado

Mensajes: 2.192


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Expresión regular
« Respuesta #13 en: 24 Enero 2010, 01:35 »

nop, el $ significa fin de linea, si hay algo mas de lo ultimo que se especifico, la expresion regular es invalida, el ^$ es usado para comprobar textos con expresiones regulares /(normalmente), en cambio cuando se requieren "obtener" parte del texto analizado, es conveniente no usarlos ;)
En línea

IWKY

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Expresión regular
« Respuesta #14 en: 24 Enero 2010, 03:01 »

Bien pero también hay que saber como es un email realmente, donde esta definido que caracteres puede llevar y cuales no, en que posiciones se permiten que caracteres y en cuales no, y a partir de ahí se puede hacer una buena expresión regular.

Entonces:
Código:
^[\w]+([\.\-_][\w]+)*@[\w]+([\.\-\_][\w]+)*\.[\w]{2,3}$
Seria la expresión final, para reconocer correos electronicos, bien formados.
En línea

Por internet libre http://red-sostenible.net/
El mejor momento de Dragon Ball Z --> Aqui
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Expresión Regular
Desarrollo Web
Shell Root 4 993 Último mensaje 10 Abril 2011, 22:26
por Shell Root
Aplicar expresión regular en el resultado de un curl
PHP
Servia 3 860 Último mensaje 28 Agosto 2011, 14:11
por WHK
Expresión regular email
PHP
Littl3 1 780 Último mensaje 20 Septiembre 2011, 23:06
por ~ Yoya ~
Expresión regular para buscar y reemplazar en notepad++ « 1 2 »
Programación General
vvcepheus7 21 876 Último mensaje 11 Diciembre 2011, 01:14
por vvcepheus7
Buscando la expresión regular adecuada para hacer esto
Programación General
‭lipman 0 81 Último mensaje 30 Diciembre 2011, 18:06
por ‭lipman
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines