没有域名扩展的电子邮件验证通

时间:2018-04-26 12:16:04

标签: aurelia aurelia-framework aurelia-validation

我在我的项目中使用Aurelia-Validation并尝试验证电子邮件地址。当我添加电子邮件example@g时,它会通过验证。电子邮件验证不应该在末尾有.com.net等扩展程序来通过验证吗?请参阅plunker 链接作为示例。

以下是显示我的意思的截图:

2018-04-25 10_09_35-plunker

3 个答案:

答案 0 :(得分:5)

这有点挑剔,但就像emix已在评论中指出的那样,aurelia-validation使用的验证正则表达式目前是WHATWG指定的广泛接受的标准。这与MDNw3.org中记录的正则表达式相同。

Mozilla似乎遵循此规范至少验证input type="email"。虽然我无法找到铬或边缘的任何官方消息来源。

该正则表达式的JavaScript版本是:

/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/

简单来说,这意味着:

  1. (必填)在@符号之前,任意数量的字母数字字符和(某些)符号
  2. (必填)在@符号后面,1到63个字母数字字符或连字符(并且不能以连字符开头或结尾)
  3. (可选)与2相同(但以句号开头),重复多次
  4. 如果要将此验证限制为可在互联网上路由的电子邮件,只需将正则表达式末尾的星号*更改为加号+即可。这使正则表达式保持相同,但现在必须至少一个以句点开头的段。

    /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/
    

答案 1 :(得分:1)

使用以下代码更改了我的验证规则:

原始代码:

ValidationRules.ensure('setEmail')
    .displayName('Email')
    .required()
    .email()
    .on(this);

带匹配模式的修改代码:

ValidationRules.ensure('setEmail')
    .displayName('Email')
    .required()
    .email()
    .matches(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/)
    .on(this);

见截图:

<强>无效:

enter image description here

<强>有效:

enter image description here

答案 2 :(得分:0)

在最新版本中,我认为我们可以在1 2 3 4 5 6 7 8 9 验证程序中使用Validators.pattern(REGEX_VALID_EMAIL)代替Validators.email

formControl可以是以下内容。

REGEX_VALID_EMAIL