Aurelia 电子邮件验证通过,无需域扩展
我正在我的项目中使用Aurelia 电子邮件验证通过,无需域扩展,aurelia,Aurelia,我正在我的项目中使用Aurelia验证,并尝试验证电子邮件地址。当我添加电子邮件example@g,它通过了验证。电子邮件验证是否应该在末尾使用.com、.net等扩展名来通过验证?以链接为例 以下是我的意思的截图: 使用以下代码更改了我的验证规则: 原始代码: ValidationRules.ensure('setEmail') .displayName('Email') .required() .email() .on(this); 使用匹配模式修改代码:
Aurelia验证
,并尝试验证电子邮件地址。当我添加电子邮件example@g
,它通过了验证。电子邮件验证是否应该在末尾使用.com
、.net
等扩展名来通过验证?以链接为例
以下是我的意思的截图:
使用以下代码更改了我的验证规则: 原始代码:
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);
请参见屏幕截图:
无效:
有效:
这有点吹毛求疵,但正如emix在评论中已经指出的那样,
aurelia validation
使用的验证正则表达式是当前被广泛接受的标准,正如。这与和上记录的正则表达式相同
似乎至少在验证input type=“email”
时遵循了此规范。不过,我在chrome或edge上找不到任何官方来源
该正则表达式的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])?)+$/
在最新版本中,我认为我们可以使用
Validators.pattern(REGEX\u VALID\u EMAIL)
而不是formControl
验证器中的Validators.EMAIL
和REGEX\u VALID\u电子邮件可以是以下内容
const REGEX_VALID_EMAIL = /^[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])?)+$/
;
可以说,这是一封有效的电子邮件。有人总是可以添加“真实”的电子邮件,比如nice。girl@gmajl.com
,但这并不意味着它也是有效的电子邮件(域MX中的有效帐户)。因此,您必须澄清您真正想要的验证类型g
可能无法在Internet上路由,但可以在Intranet中路由。谢谢。这是有道理的。我添加了匹配模式,解决了我的问题。