我需要找到所有包含任意数量字母数字单词的电子邮件地址,并用句点分隔。为了测试正则表达式,我正在使用网站https://regex101.com/。
有效电子邮件地址的结构是word1.word2.wordN@word1.word2.wordN.word
.
正则表达式/[a-zA-Z0-9.]+@[a-zA-Z0-9.]+.[a-zA-Z0-9]+/gm
查找文档字符串中包含的所有电子邮件地址,但也包含无效地址,例如........@....com
,如果存在。
我尝试使用圆括号和 Kleene 星号对重复部分进行分组,但这会导致正则表达式引擎崩溃。
无效的正则表达式:
/([a-zA-Z0-9]+.?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+.?)*[a-zA-Z0-9]+.[a-zA-Z0-9]+/gm
尽管有很多关于正则表达式组的帖子,但我无法找到解释,为什么正则表达式引擎会失败。似乎引擎在试图找到匹配项时卡住了。
我怎样才能避免这个问题,正确的解决方案是什么?