gpt4 book ai didi

javascript - 在 Javascript 中匹配几种不同的电子邮件地址格式

转载 作者:行者123 更新时间:2023-11-30 10:39:25 26 4
gpt4 key购买 nike

我们希望允许人们以多种不同的格式将电子邮件地址粘贴到我们的应用程序中,这些是:

1. foo@bar.com
2. "Foo Bar" <foo@bar.com>
3. Foo Bar <foo@bar.com>

是否有一个好的 Javascript 正则表达式可以采用这 3 个中的任何一个并给出电子邮件地址,以及前导名称(如果存在)?这些似乎是用户目前正在复制/粘贴到应用程序中的格式(我们现在只支持第一种)。

最佳答案

我想我可能得到了什么!它绝对可以改进,但在你开始提出更改建议之前给我一点时间来捍卫它。这是正则表达式:

/^(?:("{0,1})(\w+ \w+)\1 <([^@ ]+@[^@ ]+\.[^@. ]+)>|([^@ ]+@[^@ ]+\.[^@. ]+))$/

让我解释一下它的作用。第一个^(?:表示文本必须从字段的开头开始,并且不会在反向引用中捕获下一组。然后我们开始一个可选项目。这必须完成,因为我们想要要求 0 或 2 " , 和 0 或 2 <分数。可选项目的第一部分(| 栏之前)处理情况 2 和 3。

情况 2 和 3:

("{0,1})捕获开头是否有引号。然后我们使用 (\w+ \w+)在情况 2 和情况 3 中需要名字和第二个名字,用空格分隔。它们周围的括号将它们捕获到反向引用中,以便您稍后可以获取名称的值。然后是 \1 - 这是前面引号的反向引用。它说如果你在名字的开头使用引号,你也必须在名字的末尾使用它们。接下来,<表示情况 2 和 3 中的电子邮件地址必须由名称或结束引号中的空格分隔,并且必须以小于号开头。最后,我们有了电子邮件的正则表达式!这对所有情况都是一样的。它被括号括起来以创建反向引用。 [^@ ]+@确保在实际的 @ 符号之前不能有 @ 符号或空格。以下[^@ ]+\.对 @ 符号后的句点和结尾的 [^@. ]+ 做同样的事情确保在该期间之后也是如此。然后我们有一个右括号来结束对电子邮件地址的反向引用,以及一个 >。符号,因为这仍然适用于需要一个的情况 2 和 3。

案例 1:

然后我们到达 |管道,它指定我们已经得到了正则表达式中的另一个选项。如果文本格式与案例 2 和案例 3 的开始条件不匹配,则正则表达式会检查它是否只是一个普通的电子邮件地址(案例 1)。这里的正则表达式与 <> 之间的正则表达式相同情况 2 和 3 中的符号 - 它匹配有效的电子邮件地址并创建反向引用。

有效格式:

以下是可用格式的不完整列表:

foo@bar.com
foo1.foo2@bar.com
foo1.foo2@bar1.bar2.com
Foo Bar <foo@bar.com>
"Foo Bar" <foo@bar.com>
foo bar <site1.site2@test1.test2.com>
"foo bar" <site1.site2@test1.test2.com>

WORKING DEMO

关于javascript - 在 Javascript 中匹配几种不同的电子邮件地址格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11998708/

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