Foros del Web » Programando para Internet » PHP »

Ayuda! exprecion regular para validar correo electronico

Estas en el tema de Ayuda! exprecion regular para validar correo electronico en el foro de PHP en Foros del Web. hola, ando haciendo una exprecion regular para validar correo: es esta: Código PHP: $text  =  '[email protected]' ; $text  =  ereg_replace ( "^[^@ ]+@[^@ ]+.[^@ .]+$" , "correo aceptado" , ...
  #1 (permalink)  
Antiguo 20/05/2010, 09:53
Avatar de Fierce  
Fecha de Ingreso: marzo-2008
Mensajes: 216
Antigüedad: 16 años, 1 mes
Puntos: 3
Pregunta Ayuda! exprecion regular para validar correo electronico

hola, ando haciendo una exprecion regular para validar correo:

es esta:
Código PHP:
$text '[email protected]';
$text ereg_replace("^[^@ ]+@[^@ ]+.[^@ .]+$","correo aceptado",$text);
echo 
$text
funciona todo bien, el problema es que...
me gustaria hacer que aceptara todos los tipos de correos menos el de hotmail y yahoo o sea, cuando pusieran hotmai y yahoo no remplazara el texto o sea que no lo acepte.

no se como hacerlo he intentado varias formas y no lo consigo, soy nuevo en esto de exprecioners regulares.
  #2 (permalink)  
Antiguo 20/05/2010, 10:02
 
Fecha de Ingreso: mayo-2010
Mensajes: 84
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda! exprecion regular para validar correo electronico

Puedes utilizar la función de php, $part_valor = explode("@", $valor);
$valor será la dirección de correo electrónico recogida, y utilizas:
$part_valor[1], ya que la función explode, divide la cadena en dos, a la izquierda del delimitador(@) y a la derecha del delimitador(@). O sea, el valor que se la pasa a $part_valor es 0 para la parte izquierda y 1 para la derecha. Posteriormente puedes excluir con un condicional if.
  #3 (permalink)  
Antiguo 20/05/2010, 18:02
Avatar de Fierce  
Fecha de Ingreso: marzo-2008
Mensajes: 216
Antigüedad: 16 años, 1 mes
Puntos: 3
Respuesta: Ayuda! exprecion regular para validar correo electronico

y no existe la forma de hacerlo en las expreciones regulares para no hacer tanto codigo?
  #4 (permalink)  
Antiguo 20/05/2010, 18:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda! exprecion regular para validar correo electronico

Cita:
Iniciado por Fierce Ver Mensaje
y no existe la forma de hacerlo en las expreciones regulares para no hacer tanto codigo?
pues claro de que se puede, pero preguntate... ¿quien tiene que hacer el trabajo?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 20/05/2010, 18:09
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Ayuda! exprecion regular para validar correo electronico

http://php.net/manual/es/regexp.refe...assertions.php
http://www.php.net/manual/es/regexp....erticalbar.php

Eso te servirá.

EDIT : No uses ereg_*, usa preg_*.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #6 (permalink)  
Antiguo 21/05/2010, 07:15
Avatar de Fierce  
Fecha de Ingreso: marzo-2008
Mensajes: 216
Antigüedad: 16 años, 1 mes
Puntos: 3
Pregunta Respuesta: Ayuda! exprecion regular para validar correo electronico

Cita:
Iniciado por pateketrueke Ver Mensaje
pues claro de que se puede, pero preguntate... ¿quien tiene que hacer el trabajo?
la verdad el codigo no pienzo aplicarlo para una simple validacion de correo porque si quisiera acerlo asi tranquilamente aria un if diciendo que si esta dentro la palabra hotmail no ejecute la exprecion regular y automaticamente pase a que no es valido.

lo que hise con este pequeño ejemplo es simplificar al maximo lo que nesesito para una funcion que ando creando, solo que para terminarla nesesito algo similar a la validacion de un correo exeptuando que no sea de hotmail (como a lo que les dije arriba); con un simple if no lo puedo solucionar tiene que ser con expreciones regulares, solo me falta eso he leido los manuales que an enviado y ahun no logro encontrar solucion alguna.

y no me vengas a subestimar pateketrueke hijo de la "$·%&?, que si pregunto bobadas es porque son pequeñas cosillas que van incluido en algo grande, asi que no me vengas con que me tienen que hacer el trabajo que si fuera eso entonces perguntaria:

"como puedo hacer una funcion que examine un archivo multimedia que este en un servidor externo(mp3, flv, avi etc), y sin descargarlo saque su duracion maxima de reproducion.

bueno, como les dije antes... solo nesesito esa pequeña logica ya que la funcion esta al 99% por ese pequeño inconveniente, si me ayudan publicare la funcion aqui, algo larga pero entendible, tal vez les sirvan en un futuro.
  #7 (permalink)  
Antiguo 21/05/2010, 07:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda! exprecion regular para validar correo electronico

yo creo que validar una dirección de correo con expresiones regulares es de lo mas básico en este mundo...

y sinceramente un sencilla búsqueda podría resolverte la duda:
php regex email validation

con respecto a si es hotmail o no, eso lo haces mediante otra lógica usando un simple strpos() antes de validar dicha variable...

PDTA: y gracias por ese ASCII que afortunadamente no entendí... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 21/05/2010, 07:41
Avatar de Fierce  
Fecha de Ingreso: marzo-2008
Mensajes: 216
Antigüedad: 16 años, 1 mes
Puntos: 3
Respuesta: Ayuda! exprecion regular para validar correo electronico

Cita:
Iniciado por pateketrueke Ver Mensaje
yo creo que validar una dirección de correo con expresiones regulares es de lo mas básico en este mundo...

y sinceramente un sencilla búsqueda podría resolverte la duda:
php regex email validation

con respecto a si es hotmail o no, eso lo haces mediante otra lógica usando un simple strpos() antes de validar dicha variable...

PDTA: y gracias por ese ASCII que afortunadamente no entendí... ;)
que respuesta mas rapida, no paso ni 2 minutos de haber respondido

si, conosco el strpos, lo he usado miles de veces, creo que no me entendistes

nesesito algo similar al strpos pero que este metido dentro de la exprecion regular porque en si, no es para validar un email, es para otra funcion que ando haciendo

por ejemplo:

Código PHP:
$text '[email protected]';
//que esto acepte todo correo menos los de hotmail
$text ereg_replace("^[^@ ]+@[^(@|hotmail) ]+.[^@ .]+$","correo aceptado",$text);
echo 
$text
observa como puse alli [^(@|hotmail) ]+ le puse que acepte lo que sea menos el @ o el Hotmail, lo malo es que como esta dentro de los "[]" coje cada caracter y no la palabra entera hotmail dificultando las cosas, y nesesito que coja es la palabra entera pero no se como podria organizarlo
  #9 (permalink)  
Antiguo 21/05/2010, 07:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda! exprecion regular para validar correo electronico

por eso se te recomienda estudiar bien expresiones regulares... ya que las frases completas no se pueden negar, entiendes eso??

entonces... por eso te sugiero que uses primer strpos() para descartar si la frase @hotmail existe en dicha cadena... una ves superes dicho paso, la expresión normal para validar correos debe ser sencilla... ;)

vamos, ojalá con regex se pudiera hacer todo... pero en todo caso, es un desperdicio de recursos... y vamos, no es tan mágico como uno cree..
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 21/05/2010, 08:19
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Ayuda! exprecion regular para validar correo electronico

También podés utililizar los filtros nativos de php5, para validar los correos.
Código PHP:
Ver original
  1. $email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
  2.  
  3. if(filter_var($email, FILTER_VALIDATE_EMAIL)){
  4. echo"mail valido";
  5. {
  6. else{
  7. echo"mail invalido";
  8. }

Última edición por fernandozunni; 21/05/2010 a las 08:53
  #11 (permalink)  
Antiguo 21/05/2010, 19:39
Avatar de Fierce  
Fecha de Ingreso: marzo-2008
Mensajes: 216
Antigüedad: 16 años, 1 mes
Puntos: 3
Respuesta: Ayuda! exprecion regular para validar correo electronico

gracias a los que respondieron, bueno.... me toco irme por el lado dificil, tratare de organizar todo el lograritmo de tal manera que descarte la palabra antes de llegar a la exprecion regular.

cuando lo termine lo publico

Etiquetas: correo, electronico, regular
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:10.