【问题标题】:Javascript Regex validate email with ñ characterJavascript正则表达式验证带有ñ字符的电子邮件
【发布时间】:2014-10-04 00:51:04
【问题描述】:

前段时间我发布了这个问题PHPMailer Character ñ on recipient address 并得到了我的答案。尽管如此,我还是决定继续使用 PHPMailer,但我无法对 ñ 做任何事情,但排除带有 ñ 字符的电子邮件,我首先使用 javascript 使用我很久以前在本网站某处找到的这个正则表达式验证电子邮件,它工作得很好很好,但我希望它也排除带有字符 ñ 的电子邮件。

我很难理解正则表达式,一旦我在 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@mail.com,它就会变得有效。

如何修复正则表达式以在电子邮件的任何位置捕获 ñ?

【问题讨论】:

  • 我希望它无效,我希望 lauromuñoz@mail.com 和 lauro.muñoz@mail.com 具有相同的结果。如果您键入 lauromuñoz@mail.com 它没有匹配项,我希望 lauro.muñoz@mail.com 必须匹配 ethier。
  • 您说您不想匹配名称或任何其他部分包含ñ 的电子邮件。

标签: javascript regex validation email


【解决方案1】:

正则表达式让人眼睛不舒服,我建议使用不同的工具进行解析。对此的某种解决方案是在您的模式之前的字符串 ^ 锚点的开头之后添加 Negative Lookahead。

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

Live Demo

【讨论】:

    猜你喜欢
    • 2014-05-11
    • 2011-10-27
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    相关资源
    最近更新 更多