【问题标题】:JS - Transform single email validation pattern into multiple email validation pattern. [duplicate]JS - 将单个电子邮件验证模式转换为多个电子邮件验证模式。 [复制]
【发布时间】:2019-01-23 10:19:36
【问题描述】:

我正在努力创建一个可以验证多封电子邮件的正则表达式模式。我知道这个话题已经被广泛讨论,但是,在研究了所有这些之后,我找不到我的具体问题的答案。我的问题如下。

我正在处理的项目是用 PHP 编写的,并使用 FILTER_VALIDATE_EMAIL。我的目标是编写一个前端电子邮件验证器,以某种方式用于单个和多个电子邮件,与 FILTER_VALIDATE_EMAIL 一致。在这里https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js我找到了符合最新RFC标准规定的理想Regex模式,即:

^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\.){1,126})+(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))]))$

现在我一直在尝试为多封电子邮件制作这种特殊的模式功能。我的问题来了,我该如何完成?我试图设置

[\s*,]*

为了让多个地址通过,到目前为止我只是头疼,所以非常欢迎您的帮助,在此先感谢!

【问题讨论】:

  • @Wiktor Stribiżew 这不是重复的。我的主题主要涉及正则表达式,特别是模式可能性的扩展。电子邮件验证排在第二位。

标签: javascript regex


【解决方案1】:

试试这个..

var pattern = /^\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i

if(!pattern.test(inputYour))
{
  console.log('not a valid e-mail address');
}​

对于多个电子邮件..

var x = getEmails();
var emails = x.split(",");
emails.forEach(function (email) {
 validate(email.trim());
});

验证函数应该有你上面的代码...

这是一次性签到...

var email = 'test@example.com, hello@example.com,mail@example.com';
alert ( (/^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i.test(email)) );

链接https://www.experts-exchange.com/questions/28940315/JavaScript-REGEX-validate-multiple-emails-addresses-separated-my-commas.html

【讨论】:

  • 不是我想要的,我的问题主要是关于如何扩展我在初始消息中引用的模式的功能,不过,谢谢。
  • 至于您添加的第二个代码块 - 是的,我在 SO 主题之一中看到过,但同样,我不是试图通过一种模式验证每封电子邮件,而是验证多封电子邮件。事实上,很可能我最终会一一验证这些,但是,我想找到我一直在努力解决的问题的答案。
  • 你看到这个链接了吗regextester.com/99193
  • 是的,这就是我正在寻找的东西,或者,更好地说,我正在尝试弥补我目前对 Regex 的肤浅知识的空白。谢谢!
  • 至于你引用的模式 - 好吧,它确实有效,但是,我无法理解确保我的模式多重性的概念。
猜你喜欢
  • 2020-08-14
  • 2021-02-16
  • 2013-04-25
  • 1970-01-01
  • 2019-05-07
  • 2017-11-29
  • 2014-05-13
  • 2013-08-07
  • 2023-04-04
相关资源
最近更新 更多