aurelia - 电子邮件验证通过,无需域扩展
问题描述
我Aurelia-Validation
在我的项目中使用并尝试验证电子邮件地址。当我添加电子邮件example@g
时,它通过了验证。电子邮件验证最后不应该有.com
, .net
, etc 扩展名以通过验证吗?以plunker链接为例。
这是显示我的意思的屏幕截图:
解决方案
这有点挑剔,但就像 emix 在评论中已经指出的那样,所使用的验证正则表达式目前是WHATWGaurelia-validation
指定的被广泛接受的标准。这与MDN和w3.org上记录的正则表达式相同。
Mozilla似乎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 个字母数字字符或连字符之间(不能以连字符开头或结尾) - (可选)与 2 相同(但以句点开头),重复任意次数
如果您想将此验证限制为可在 Internet 中路由的电子邮件,只需*
将正则表达式末尾的星号更改为加号即可+
。这使正则表达式保持相同,除了现在必须至少有一个以句点开头的段。
/^[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])?)+$/
推荐阅读
- c++ - 可以从 Windows DLL 中的全局变量创建/销毁 std::threads 吗?
- c# - 连续运行多个异步任务
- reactjs - 开玩笑地使用 babel / laravel-mix
- google-cloud-platform - @google-cloud/storage:找不到具有指定主机名的服务器
- r - 将时钟时间从 H:MM 转换(格式化)为 HH:MM
- apache - 在 DirectAdmin 上安装 OpenLiteSpeed
- android - 暂停协程函数直到它收到结果然后继续
- python - Groupby 列名并将结果添加为附加列
- php - 为什么 is_null 在未设置的变量上抛出异常
- python - 在值而不是时间/合并数据帧上重新采样数据帧