Javascript正则表达式使用ñ字符验证电子邮件

时间:2014-10-04 00:51:04

标签: javascript regex validation email

前段时间我发布了这个问题PHPMailer Character ñ on recipient address并得到了答案。仍然,我决定继续使用PHPMailer,我不能做任何关于ñ但排除带有ñ字符的电子邮件,我首先使用这个正则表达式使用这个正则表达式验证电子邮件我很久以前在这个网站的某个地方找到了,这很有效很好,但我希望它也能排除带有角色的电子邮件。

我很难理解正则表达式,一旦我在stackoverflow上找到了一个非常好的解释,但我丢失了链接。无论如何,这是我用来验证电子邮件的功能:

function isEmail(email){
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}

要排除ñ,我想我可以这样做:

function isEmail(email){
var re = /^(([^ñÑ<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}

适用于电子邮件,如lauromuñoz@mail.com,但如果我在名称和姓氏之间添加一个点,就像这样,lauro.muñoz@。它就会生效。

如何在电子邮件中的任何位置修复正则表达式?

1 个答案:

答案 0 :(得分:3)

正则表达式对眼睛不安,我建议使用不同的工具进行解析。对此的一些解决方案是在模式之前的字符串^锚点开始之后添加否定前瞻。

var re = /^(?!.*[ñÑ]) ... $/

Live Demo