【问题标题】:Regular expression for an email address not end with </a>电子邮件地址的正则表达式不以 </a> 结尾
【发布时间】:2017-11-08 04:09:39
【问题描述】:

我想在 ruby​​ 中使用正则表达式来捕获纯文本电子邮件地址,但不是由 mailto 链接标签(如&lt;a href="" class="" &gt;a@b.com&lt;/a&gt;)包围的电子邮件地址,尝试过source.gsub(/(?!&lt;$)[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i),但这不起作用

【问题讨论】:

  • 你在解析 HTML 吗?为什么不使用 HTML 解析器并简单地获取该元素的文本内容?
  • 你知道你can't parse HTML with a regexp,因为 HTML 不是常规语言吗?

标签: ruby regex regex-negation


【解决方案1】:

/(\w+@[\w.-]+|\{(?:\w+, *)+\w+\}@[\w.-])(?!&lt;\/a&gt;)*$/i

比如source.gsub(/(\w+@[\w.-]+|\{(?:\w+, *)+\w+\}@[\w.-])(?!&lt;\/a&gt;)*$/i)

这是正则表达式语句,我也冒昧地使用了不同的电子邮件选择器。

(?!&lt;\/a&gt;)*$ 基本上说如果它以&lt;/a&gt; 结尾,则忽略它。如果您希望每行/文档有多个电子邮件地址,那么首先过滤掉任何 &lt;a&gt;&lt;/a&gt; 标记可能会更有效。

【讨论】:

  • 感谢您的回答,不幸的是,正则表达式不会捕获以 标记结尾的电子邮件地址或纯文本...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
  • 2011-10-14
  • 1970-01-01
相关资源
最近更新 更多