gpt4 book ai didi

regex - 将电子邮件与 a-z 和点或加号匹配

转载 作者:行者123 更新时间:2023-12-05 05:10:22 26 4
gpt4 key购买 nike

我正在尝试将电子邮件与名称为以下字符的 gmail 域匹配:a-z、加号|点。因此,在以下电子邮件列表中:

answer.me...charlie@gmail.com
answer.me...charlie@tsunami.org
godfrey+assclown@gmail.com
wisk+as+w+e+rain@gmail.com
atomic+sam@outlook.org
canceee@gmail.com
linkedrebel@gmail.com
nuclearimpact+empoly@gmail.com
clericly.ass@gmail.com
r@gmail.com

应该匹配:

answer.me...charlie@gmail.com
godfrey+assclown@gmail.com
wisk+as+w+e+rain@gmail.com
nuclearimpact+empoly@gmail.com
clericly.ass@gmail.com

我试过:

^((?=.*[a-z])(?=.*[.+]).+)@(g(?:oogle)?mail\.com)$

但是列表[.+]中的点是匹配域名的点,匹配所有域名。如果我删除点,它只会匹配名称为加号的电子邮件。这个问题有什么解决方案吗?

正则表达式 101:https://regex101.com/r/bKqzan/1

最佳答案

你可以用 [^@] 调节所有的点:

^(?=[^@]*[a-z])(?=[^@]*[.+])([^@]+)@(g(?:oogle)?mail\.com)$

这样所有的前瞻限制只适用于@之前的部分。更有效的变体:

^(?=[^@a-z]*[a-z])(?=[^@.+]*[.+])([^@]+)@(g(?:oogle)?mail\.com)$

参见 regex demo .

详情

  • ^ - 字符串的开始
  • (?=[^@]*[a-z]) - 一个积极的前瞻,需要在除 @
  • 之外的任何 0+ 个字符之后有一个小写字母
  • (?=[^@]*[.+]) - 一个积极的前瞻,需要在除 @ 之外的任何 0+ 个字符之后加号或点。
  • ([^@]+) - 第 1 组:@
  • 以外的 1+ 个字符
  • @ - @ 字符
  • (g(?:oogle)?mail\.com) - 第 2 组:g 可选地后跟 oogle 然后是 mail.com
  • $ - 字符串结尾。

关于regex - 将电子邮件与 a-z 和点或加号匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56708699/

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