Páginas: [1] 2
|
 |
|
Autor
|
Tema: Expresión regular (Leído 2237 veces)
|
IWKY
Desconectado
Mensajes: 267
|
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: '/^[^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: '/^[^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
|
|
|
|
~ Yoya ~
Desconectado
Mensajes: 433
|
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
|
|
|
|
|
|
raul338
Grupo de Trabajo
Desconectado
Mensajes: 751
Mister .net
|
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 '/^[^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 mensajeCon ese correo funciona, ya me fije 
|
|
|
|
« Última modificación: 24 Enero 2010, 00:04 por raul338 »
|
En línea
|
|
|
|
|
|
raul338
Grupo de Trabajo
Desconectado
Mensajes: 751
Mister .net
|
entonces haz una expresion mas simple ^[\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.comy en caso de que quieras una expresion regular que no valide esos correos, aqui tienes una: ^[a-zA-Z][\w\.\-\_]+\@[\w\.\-\_]+\.\w{2,4}$
|
|
|
|
|
En línea
|
|
|
|
~ Yoya ~
Desconectado
Mensajes: 433
|
/([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 [\w\.\-\_] si con [\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
|
|
|
|
IWKY
Desconectado
Mensajes: 267
|
entonces haz una expresion mas simple ^[\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.comy en caso de que quieras una expresion regular que no valide esos correos, aqui tienes una: ^[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 ^[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
|
|
|
|
~ Yoya ~
Desconectado
Mensajes: 433
|
Esta exprecion no es muy confiable: ^[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
|
|
|
|
IWKY
Desconectado
Mensajes: 267
|
O sea una entrada de este estilo 123mail@mail.com , para eso supondo que se debería de añadir lo siguiente al inicio [^0-9] quedando así las expresión ^[^0-9][a-zA-Z][\w\.\-\_]+\@[\w\.\-\_]+\.\w{2,4}$
|
|
|
|
|
En línea
|
|
|
|
~ Yoya ~
Desconectado
Mensajes: 433
|
Bueno, si el mail comienza con letra tu exprecion falla. aqui explico la mia. ^/[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
|
|
|
|
raul338
Grupo de Trabajo
Desconectado
Mensajes: 751
Mister .net
|
Esta exprecion no es muy confiable: ^[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  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. ^/[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 ^[\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): ^[\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 
|
|
|
|
|
En línea
|
|
|
|
~ Yoya ~
Desconectado
Mensajes: 433
|
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
|
|
|
|
raul338
Grupo de Trabajo
Desconectado
Mensajes: 751
Mister .net
|
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
Mensajes: 267
|
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: ^[\w]+([\.\-_][\w]+)*@[\w]+([\.\-\_][\w]+)*\.[\w]{2,3}$ Seria la expresión final, para reconocer correos electronicos, bien formados.
|
|
|
|
|
En línea
|
|
|
|
|
Páginas: [1] 2
|
|
|
|