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

+  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,300 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

Conectado Conectado

Mensajes: 907



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

a




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


Conectado Conectado

Mensajes: 2.199


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


Conectado Conectado

Mensajes: 2.199


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

Conectado Conectado

Mensajes: 907



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

a




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

Conectado Conectado

Mensajes: 907



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

a




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

Conectado Conectado

Mensajes: 907



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

a




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


Conectado Conectado

Mensajes: 2.199


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

Conectado Conectado

Mensajes: 907



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

a




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


Conectado Conectado

Mensajes: 2.199


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 1,023 Último mensaje 10 Abril 2011, 22:26
por Shell Root
Aplicar expresión regular en el resultado de un curl
PHP
Servia 3 896 Último mensaje 28 Agosto 2011, 14:11
por WHK
Expresión regular email
PHP
Littl3 1 812 Ú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 1,016 Último mensaje 11 Diciembre 2011, 01:14
por vvcepheus7
Buscando la expresión regular adecuada para hacer esto
Programación General
‭lipman 0 86 Último mensaje 30 Diciembre 2011, 18:06
por ‭lipman
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines