Foros del Web » Programando para Internet » PHP »

Expresión regular que compruebe formato variable y longitud total

Estas en el tema de Expresión regular que compruebe formato variable y longitud total en el foro de PHP en Foros del Web. Buenas, Tengo esta expresión regular para comprobar una dirección de email: Código: ^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.([a-z]{2,4})$ La historia es que necesito comprobar también su longitud total, que no ...
  #1 (permalink)  
Antiguo 30/04/2013, 02:29
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 3 meses
Puntos: 32
Expresión regular que compruebe formato variable y longitud total

Buenas,

Tengo esta expresión regular para comprobar una dirección de email:

Código:
^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.([a-z]{2,4})$
La historia es que necesito comprobar también su longitud total, que no pase de 50 caracteres. Pero claro, una dirección puede ser [email protected] o [email protected].

Vamos que el formato varía según bloques.

Gracias.
  #2 (permalink)  
Antiguo 30/04/2013, 03:25
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Expresión regular que compruebe formato variable y longitud total

http://www.forosdelweb.com/f18/peque...emails-848993/
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 30/04/2013, 03:28
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Expresión regular que compruebe formato variable y longitud total

Gracias. Ya se que hay otras opciones de hacerlo, pero quería saber si es posible con una sola expresión regular.
  #4 (permalink)  
Antiguo 30/04/2013, 08:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresión regular que compruebe formato variable y longitud total

Claro que es posible con RegExp, ¿pero para qué?

¿Si sabes que son mas lentas que las comparaciones regulares de cadenas?

Además no se si te diste cuenta, que en el enlace que te acercaron la función is_email() usa en realidad una expresión regular, ¿lo notaste?

Sin embargo es mucho mejor usar la extensión filter si quieres velocidad y mayor precisión, las expresiones regulares son un último recurso y no es correcto abusar de ellas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 30/04/2013, 08:37
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Expresión regular que compruebe formato variable y longitud total

Cita:
Iniciado por pateketrueke Ver Mensaje
Claro que es posible con RegExp
Y cómo sería por favor?

Tengo un array con las expresiones regulares y haciendo un foreach voy comprobando los datos del array de datos con su correspondiente campo en el array de expresiones.

La idea es solucionar este problema de longitud en expresión regular para no cambiar mucho código que tengo hecho.

Sé solucionarlo de otra manera, pero quería intertarlo con expresión regular para no tocar nada.

Qué debería añadir a la expresión que tengo ahora?

Código:
^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.([a-z]{2,4})$
Gracias.
  #6 (permalink)  
Antiguo 30/04/2013, 08:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresión regular que compruebe formato variable y longitud total

La regla de oro para RegExp es sencilla, si hay una función que resuelva sin usar RegExp tu problema entonces no uses RegExp.

¿Leíste el resto de mi comentario?

Veo que no.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 30/04/2013, 08:50
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Expresión regular que compruebe formato variable y longitud total

Y tú leíste el mío? Veo que no.

Cita:
Iniciado por cluster28 Ver Mensaje
Sé solucionarlo de otra manera, pero quería intertarlo con expresión regular
Necesito que no pase de 50 caracteres.
  #8 (permalink)  
Antiguo 30/04/2013, 08:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresión regular que compruebe formato variable y longitud total

Entonces tu tema ya está fuera del foro de PHP, ya que se nota que tienes interés en aprender RegExp te sugiero consultar una referencia, igual también existe el sub-foro de RegExp donde te podemos orientar al respecto.

A lo que voy, no buscas solucionar tu problema per se, buscas una expresión regular que solucione tu problema, no es igual.

Si fuera lo primero ya tienes soluciones, en caso de lo segundo entonces te toca aprender.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 30/04/2013, 09:08
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Expresión regular que compruebe formato variable y longitud total

Cita:
Iniciado por pateketrueke Ver Mensaje
también existe el sub-foro de RegExp donde te podemos orientar al respecto.
Efectivamente, no había visto este sub-foro http://www.forosdelweb.com/f183/, por eso lo he puesto en este. Se podría mover ahí.

Cita:
Iniciado por pateketrueke Ver Mensaje
A lo que voy, no buscas solucionar tu problema per se, buscas una expresión regular que solucione tu problema, no es igual.
No entiendo esta frase, qué es per se?

De todos modos con filter_var no se puede validar la lobgitud, sólo valida el formato.

Muchas gracias.
  #10 (permalink)  
Antiguo 30/04/2013, 09:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresión regular que compruebe formato variable y longitud total

"per se" significa "de por si" o "por si mismo", y bueno, ¿ya revisaste la documentación de filter_var() para ver si definitivamente no se puede especificar longitud en las opciones?

Además, ¿que tan difícil sería usar strlen() después de validar el correo para comprobar la longitud?

No veo el problema.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 30/04/2013, 09:20
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Expresión regular que compruebe formato variable y longitud total

Gracias por la aclaración.

He mirado la documentación de filter_var y el filtro FILTER_VALIDATE_EMAIL no permite opciones, por lo que sólo valida el formato.

Está claro que no es complicado comprobar la longitud, pero estaba interesado en saber si se puede a través de expresión regular. Sobre todo porque me han asegurado que se puede validar ambas cosas en la misma expresión. Y mirando por internet no he encontrado nada.
  #12 (permalink)  
Antiguo 30/04/2013, 09:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresión regular que compruebe formato variable y longitud total

Si, y tienes roda la razón, claro que se puede, pero como te he comentado en mis respuestas es tema aparte, en el foro de PHP tratamos problemas de código PHP y RegExp es un lenguaje adicional, como el SQL o HTML, etc.

Hay un sub-foro dedicado a RegExp y si deseas aprender a hacer lo que tienes pensado no dudes en consultarlo, pero sobre todo no olvides consultar una referencia de RegExp que como todo lenguaje está bien documentado.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: formato, longitud, regular, variable
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 00:39.