gpt4 book ai didi

用于 GMail 式电子邮件地址验证的 Javascript 正则表达式

转载 作者:行者123 更新时间:2023-11-28 21:00:46 26 4
gpt4 key购买 nike

我需要一个正则表达式来接受多种格式(见下文)的格式正确的电子邮件,这些格式将在逗号分隔的列表中输入。我有基本的电子邮件地址验证正则表达式,

^[\w\d._%+-]+@(?:[\w\d-]+\.)+(\w{2,})(,|$) 

它可以处理测试用例AB,但不能处理其他用例。我也尝试过

^(\<)?[\w\d._%+-]+@(?:[\w\d-]+\.)+(\w{2,})(\>)?(,|$)

能够处理ABC,但仅验证每个测试用例中的第一个电子邮件地址DE。我什至还没有测试格式 3 的正则表达式。

tl;dr 需要一个正则表达式来验证电子邮件地址 123

测试正则表达式的好网站:Online Javascript Regex Tester

数据

测试用例
A.nora@example.com
B.nora@example.com、fred@example.com
C.<nora@example.com> ,fred@example.com
D <nora@example.com>, <fred@example.com>
E.fred@example.com,<nora@example.com>

电子邮件地址格式
1.xyz@example.com
2.<xyz@example.com>
3.“xyz”<xyz@example.com>

编辑

我将其标记为可能的重复项:

Validate email address in JavaScript?

这似乎是以下内容的重复:

Using a regular expression to validate an email address

两者都包含很多关于正则表达式作为电子邮件验证的有效性的讨论。然而,提供的得票最多的正则表达式似乎并没有完全达到我想要的效果,所以我认为这个问题还没有得到解答。

最佳答案

所提供的链接或答案都不是此问题的最佳答案。这是解决问题的方法:

/*
* regex checks: must start with the beginning of a word or a left caret
* must end with either the end of a word or a right caret
* can handle example.example.com as possible domain
* email username can have + - _ and .
* not case sensitive
*/
var EMAIL_REGEX = /(\<|^)[\w\d._%+-]+@(?:[\w\d-]+\.)+(\w{2,})(\>|$)/i;
var emails = emailList.trim().split(',');
var validEmails = [];
var invalidEmails = [];

for (var i = 0; i < emails.length; i++) {
var current = emails[i].trim();
if(current !== "") {
//if something matching the regex can be found in the string
if(current.search(EMAIL_REGEX) !== -1) {
//check if it has either a front or back bracket
if(current.indexOf("<") > -1 || current.indexOf(">") > -1) {
//if it has both, find the email address in the string
if(current.indexOf("<") > -1 && current.indexOf(">") > -1) {
current = current.substr(current.indexOf("<")+1, current.indexOf(">")-current.indexOf("<") -1);
}
}
}
if(EMAIL_REGEX.test(current)) {
validEmails.push(current);
} else {
invalidEmails.push(current);
}
}
}

关于用于 GMail 式电子邮件地址验证的 Javascript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11111332/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com