我在我的项目中使用Aurelia-Validation
并尝试验证电子邮件地址。当我添加电子邮件example@g
时,它会通过验证。电子邮件验证不应该在末尾有.com
,.net
等扩展程序来通过验证吗?请参阅plunker 链接作为示例。
以下是显示我的意思的截图:
答案 0 :(得分:5)
这有点挑剔,但就像emix已在评论中指出的那样,aurelia-validation
使用的验证正则表达式目前是WHATWG指定的广泛接受的标准。这与MDN和w3.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到63个字母数字字符或连字符(并且不能以连字符开头或结尾)如果要将此验证限制为可在互联网上路由的电子邮件,只需将正则表达式末尾的星号*
更改为加号+
即可。这使正则表达式保持相同,但现在必须至少一个以句点开头的段。
/^[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);
见截图:
<强>无效:强>
<强>有效:强>
答案 2 :(得分:0)
在最新版本中,我认为我们可以在1
2
3
4
5
6
7
8
9
验证程序中使用Validators.pattern(REGEX_VALID_EMAIL)
代替Validators.email
。
和formControl
可以是以下内容。
REGEX_VALID_EMAIL