Formatos para direcciones e-mail o direcciones de viviendas

Hola a todos

Llevo tiempo pensando en si se puede de alguna forma predeterminar el formato cuando se pide una dirección e-mail o cuando se esta solicitando la dirección de la vivienda.
Algo como por ejemplo una opción que si la persona esta diligenciando su dirección e-mail en el campo solicitada y esta olvido el signo @ el sistema arroje una alerta indicando que ese no es un formato valido.
El otro ejemplo es cuando se piden direcciones de viviendas toca dejar en campos de texto y como no hay un formato estandarizado la info que llega en las recolección de esta pregunta es bastante errada, se puede predeterminar un formato para este tipo de opciones?

Saludos a toda la comunidad,

Hola Luis,

Para los e-mail podrías utilizar el siguiente constraint:

regex(., '[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}')

Te recomiendo probarlo antes para garantizar que funcione de acuerdo a lo que necesitas.

En el caso de las direcciones es más complicado. Dependera del formato que desees usar o que se utilice en tu país.

Personalmente, recomiendo no utilizar "constraints" para predeterminar este tipo de datos, pues se corre el riesgo de que los datos que se recojan en campo no se acomoden a lo esperado. Esto lo suelo cubrir y reforzar en la capacitación previa que se le realiza a los encuestadores, y posteriormente lo valido en la base de datos.

Te dejo esta página para aprender a utilizar regex y darle el formato que necesites:

Además, te recomiendo leer este post de @yanokwa en el que habla acerca del uso de constraints y regex en nombres.

Saludos.

2 Likes

My Spanish is not so bueno, but I agree with Jorge that you probably don't want to have strict constraints here.

This is especially true with email addresses because the email address specification is maddening. For me, the best way to validate an email is to send an email to that address with a link inside and see if someone clicks that link. The next best way, especially if you are offline, is to make sure there is no obvious typo.

So what I check is at least one non-whitespace character, followed by an @, followed by at least one non-whitespace character, followed by an ., and then at least one non-whitespace character. Something like this:
regex(., '\S+@\S+\.\S+')

That should allow most common email addresses and typos like whitespaces and missing the @ and the period. Technically, this will reject valid email addresses (e.g., bob@local) but it's good enough.