regex - 从电子邮件地址列表中获取电子邮件值的精确正则表达式匹配

标签 regex

我有一个文本字段,用于存储电子邮件地址列表,例如:[email protected] ; [email protected] 。我有另一个文本字段,它存储与电子邮件列表匹配的确切值,即 if /<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7f073f1b1a1210511c1012" rel="noreferrer noopener nofollow">[email protected]</a>/i位于[email protected] ; [email protected]那么它应该返回 [email protected] .

我遇到的问题是,如果我有 /<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5736792f1733323a387934383a" rel="noreferrer noopener nofollow">[email protected]</a>/i ,我会得到[email protected]而不是[email protected]

我知道正则表达式 /^<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a7dfe7c3c2cac889c4c8ca" rel="noreferrer noopener nofollow">[email protected]</a>$/i ,但这意味着我的电子邮件地址列表中只能有一封电子邮件,这没有帮助。

我尝试了其他几个正则表达式,但没有成功。

关于如何实现这一目标有什么想法吗?

最佳答案

您可以使用这个稍微改变的正则表达式:

 /(^|;)<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0f774f6b6a6260216c6062" rel="noreferrer noopener nofollow">[email protected]</a>($|;)/i

它将从字符串开头或分号后开始匹配,并在字符串末尾或分号处结束。

编辑:

小改动,这使用了后视和前视,那么你只会得到你想要的匹配:

(?<=^|;)<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="166e5672737b793875797b" rel="noreferrer noopener nofollow">[email protected]</a>(?=$|;)

编辑2:

要在分号周围以及开头和结尾处允许有空格,请使用以下内容(@-quoted):

@"(?<=^\s*|;\s*)<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d4ac94b0b1b9bbfab7bbb9" rel="noreferrer noopener nofollow">[email protected]</a>(?=\s*$|\s*;)"

或使用双重转义:

"(?<=^\\s*|;\\s*)<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0e764e6a6b6361206d6163" rel="noreferrer noopener nofollow">[email protected]</a>(?=\\s*$|\\s*;)"

关于regex - 从电子邮件地址列表中获取电子邮件值的精确正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53120093/

相关文章:

javascript - 将字符串中的所有小数点替换为 ' point ' 并保持相同的数字

javascript - 如果输入字段不是数字或不为空,请替换为数字

sql - 如何使用 sql 样式转义正则表达式匹配字符串?

javascript - 将其他语言的数字更改为英文数字的正则表达式

ruby - 如何在 ruby​​ 中匹配多个正则表达式模式

java - 正则表达式在java中不起作用

c++ - std::regex 对用户定义的表达式安全吗?

javascript - 替换 javascript 正则表达式中的标签

java - 计算正则表达式匹配数

regex - Apache - 重定向到相同的 URL 但附加了查询字符串