Re: Email type

Email validation is always wrong ;)

We had a few issues with this in our implementation:

- "Email validation is too lax" [1], which is exactly your scenario
- "Email validation too strict on TLDs supported" [2]

So instead of the regexp in the spec we now use the Apache email validator
[3] ("This implementation is not guaranteed to catch all possible errors in
an email address") and then we do our own domain validation:

  // Modified email validator which:
  //
  // 1. Doesn't check whether a TLD is known, as there are two many of
those now (2015) and changing constantly.
  // 2. Doesn't support IP addresses (we probably could, but we don't care
right now).
  //
  object EmailValidatorNoDomainValidation extends EmailValidator(false) {

    private val DomainLabelRegex = "\\p{Alnum}(?>[\\p{Alnum}-]*\\p{Alnum})*"
    private val TopLabelRegex    = "\\p{Alpha}{2,}"
    private val DomainNameRegex  = "^(?:" + DomainLabelRegex + "\\.)+" +
"(" + TopLabelRegex + ")$"

    private val DomainRegex = new RegexValidator(DomainNameRegex)

    override def isValidDomain(domain: String) =
      Option(DomainRegex.`match`(domain)) exists (_.nonEmpty)
  }

This does require at least one "." and handles your case.

-Erik

[1] https://github.com/orbeon/orbeon-forms/issues/1347
[2] https://github.com/orbeon/orbeon-forms/issues/2116
[3] https://commons.apache.org/proper/commons-validator/apidocs/
org/apache/commons/validator/routines/EmailValidator.html

On Fri, Jun 23, 2017 at 4:28 AM, Steven Pemberton <steven.pemberton@cwi.nl>
wrote:

> Our definition of email accepts the following as a valid email address:
>
>         steven@cwi
>
> Are we OK with that? I'd expect at least one "." after the @.
>
> Steven
>
>

Received on Friday, 23 June 2017 16:49:39 UTC