Javascript 用于电子邮件验证的正则表达式不适用于子域?
我正在使用以下内容进行电子邮件验证:Javascript 用于电子邮件验证的正则表达式不适用于子域?,javascript,jquery,Javascript,Jquery,我正在使用以下内容进行电子邮件验证: var filter = /^([\w]+)(.[\w]+)*@([\w]+)(.[\w]{2,3}){1,2}$/; // For Email Validation if (filter.test(emailInputVal))) {console.log('good')} 出于某种原因,上述方法不适用于有子域的电子邮件。你知道为什么吗 xxxx@xxx.xxx.com 谢谢您的最后一个组件是:任意长度的单词,然后是一个或两个实例(点、两个或三个字
var filter = /^([\w]+)(.[\w]+)*@([\w]+)(.[\w]{2,3}){1,2}$/; // For Email Validation
if (filter.test(emailInputVal))) {console.log('good')}
出于某种原因,上述方法不适用于有子域的电子邮件。你知道为什么吗
xxxx@xxx.xxx.com
谢谢您的最后一个组件是:任意长度的单词,然后是一个或两个实例(点、两个或三个字母的单词)。我希望”xxxx@xxx.xxx.com“工作,但可能不是更现实的例子,如”xxxx@xxx.example.com“因为你的域名不是两三个字母的单词
帮你自己一个忙:简单地使用
/^[^@]+@[^@]+\.[^@]+$/
更多信息:,因为正则表达式不正确。请尝试以下方法:
var filter = /^\w+(?:\.\w+)*@\w+(?:\.\w+)+$/;
验证电子邮件地址时,此链接可能会帮助您:
官方RFC 2822标准
此非平凡的简化正则表达式符合RFC 2822标准:
var filter = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)\b/;
这是一个奇怪的正则表达式。它肯定没有做你期望它做的事情,例如,因为当你指的是一个文字点时,这个点并没有逃逸 既然用正则表达式验证电子邮件地址是不可能的,为什么不使用更简单的方法呢
/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i
这仍然会匹配一些无效的地址,并会拒绝一些有效的地址(正如所有可读正则表达式所做的那样),但最终您必须向用户提交的邮件地址发送一封确认邮件,并查看是否收到回复,如果您真的想验证它。我不确定上述代码是否可以使用任何格式,因为if条件中有一个额外的值),删除它也适用于子域:
if (filter.test(emailInputVal)) {console.log('good')}
您无法使用正则表达式可靠地验证电子邮件地址。我要做的是:
- 使用类似于
的简单表达式进行客户端验证,以捕获输入错误/^[^@]+@([a-Za-z0-9-]+\)*[a-Za-z0-9-]+$/
- 检查服务器端的DNS记录
- 发送确认邮件
/^((\\“\\”\[^“])*“\\[^\s]+@([a-Za-z0-9-]+\)*[A-Za-z0-9-]+$/
应该可以。。。