如何使来自 regular-expressions.info 的电子邮件验证正则表达式在 javascript 中工作?

How to make this email validation regex from regular-expressions.info work in javascript?

This question on SO led me to this website 其中有一堆关于电子邮件验证的解释。最后一个正则表达式似乎是最 准确 和推荐的。我在 SO 中搜索了此正则表达式,但我发现的实现方式略有不同。

我想用我当前的电子邮件集测试网站上提供的以下正则表达式并进行一些测试。

我尽量使标题和这个问题尽可能准确(为了您和搜索引擎),请随时提出修改建议。

有问题的正则表达式如下:

\A(?=[a-z0-9@.!#$%&'*+/=?^_`{|}~-]{6,254}\z)
 (?=[a-z0-9.!#$%&'*+/=?^_`{|}~-]{1,64}@)
 [a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*
@ (?:(?=[a-z0-9-]{1,63}\.)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+
  (?=[a-z0-9-]{1,63}\z)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\z

我转义了 / 个字符,但由于某些原因它似乎仍然不起作用。

我的目标是像这样使用这个正则表达式:

const regexEmail = new RegExp("...")

我为 regex101 上可用的此正则表达式创建了 沙盒 ,但找不到电子邮件地址。

我不是正则表达式专家,通常只得到预制的东西。非常感谢这个社区的帮助。

您需要在一行中构建 RegExp,因为您的实际正则表达式包含未转义的反引号(这意味着您不能使用多行字符串)。

const regexEmail = new RegExp("\A(?=[a-z0-9@.!#$%&'*+/=?^_`{|}~-]{6,254}\z)(?=[a-z0-9.!#$%&'*+/=?^_`{|}~-]{1,64}@)[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:(?=[a-z0-9-]{1,63}\.)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?=[a-z0-9-]{1,63}\z)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\z");

console.log(regexEmail);

试试这个

^(([^<>()\[\]\.,;:\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,}))$

您需要从正则表达式中删除所有 \A\z,它们表示 Python 中字符串的开始和结束,但等同于文字字符 Az 在 JavaScript.

删除这些显示正则表达式按预期工作 on Regex101 并且在以下内容中:

const email = "ragedog@hotmail.com";
const regex = new RegExp("(?=[a-z0-9@.!#$%&'*+\/=?^_`{|}~-]{6,254})(?=[a-z0-9.!#$%&'*+\/=?^_`{|}~-]{1,64}@)[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:(?=[a-z0-9-]{1,63}\.)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?=[a-z0-9-]{1,63})[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", "gm");

console.log(regex.test(email));