首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带重复组的PCRE2正则表达式查找电子邮件地址

使用带重复组的PCRE2正则表达式查找电子邮件地址
EN

Stack Overflow用户
提问于 2021-07-07 13:54:54
回答 1查看 176关注 0票数 0

我需要找到所有的电子邮件地址与任意数量的字母数字字,隔一个句号。为了测试regex,我使用网站https://regex101.com/

有效电子邮件地址的结构是word1.word2.wordN@word1.word2.wordN.word

regex /[a-zA-Z0-9.]+@[a-zA-Z0-9.]+.[a-zA-Z0-9]+/gm查找文档字符串中包含的所有电子邮件地址,但如果存在,还包括无效地址(如........@....com )。

我试着用圆括号和一个Kleene星对重复的部件进行分组,但是这会导致regex引擎崩溃。

无效regex:

/([a-zA-Z0-9]+.?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+.?)*[a-zA-Z0-9]+.[a-zA-Z0-9]+/gm

虽然有许多关于regex组的帖子,但我无法找到解释,为什么regex引擎会失败。似乎发动机卡住了,同时试图找到匹配的。

我怎样才能避免这个问题,正确的解决办法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-07 15:11:28

我认为给你带来麻烦的主要问题是:

. ([]之外)匹配任何字符,

您可能会指定\. (只匹配文字点字符)。

此外,没有必要使它与?可选,因为您的正则表达式的非点部分将只匹配字母数字字符无论如何。

我还简化了右部分(x*xx+相同),添加了一个不区分大小写的标志,最后得到如下结果:

代码语言:javascript
复制
/([a-z0-9]+\.)*[a-z0-9]+@([a-z0-9]+\.)+[a-z0-9]+/gmi
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68287410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档