【问题标题】:Need the next regex apply only in tags anchor需要下一个正则表达式仅适用于标签锚
【发布时间】:2021-09-28 20:34:29
【问题描述】:

我有下一个字符串:

<a href="https://lac.wetlands.org/" class="com-link" target="_blank"><mark class="hl_yellow"><b>Fundación Humedales/Wetlands International:</b></mark></a><mark class="hl_yellow"><b> </b></mark><a href="https://twitter.com/fundachumedales?lang=en" class="com-link" target="_blank">Twitter </a>/ <a href="https://es-la.facebook.com/fundacion.humedales/" class="com-link" target="_blank">Facebook</a> / Instagram. Por el Día de los Humedales, junto al Museo Scasso lanzó <a href="https://www.youtube.com/watch?v=xl0lgozO_HU&amp;feature=youtu.be" class="com-link" target="_blank">este video</a>

我只需要匹配标签的所有类。

我有这个正则表达式:

(?:class|className)=(?:["']\W+\s*(?:\w+)()?"'['"]/g;

但它适用于每个标签(如 )。只需要在标签中应用,但我无法得到它。任何帮助?强文本

【问题讨论】:

  • 不要在 HTML 上使用正则表达式。 HTML is not a regular language。使用 DOM 解析器。
  • 我不能用那个,我真的需要那个正则表达式只在标签a中工作
  • 您不是在今天之前提出了确切的问题并得到了使用解析器的答案吗? 是的,您可以使用一个来代替不会涵盖所有情况的正则表达式。
  • 当你知道如何使用的唯一工具是锤子时,一切看起来都像钉子
  • 我不是以英语为母语的人,所以我不能告诉你确切的原因,但是 dom 解析器不适合我。我真的需要一个匹配标签 only 的正则表达式

标签: javascript regex


【解决方案1】:

这将匹配a标签中的类属性:

(?<=<a)(?:.(?!<\/a>))*?class="([^"]*)

Demo

关键部分是(?:.(?!&lt;\/a&gt;))*?,您可以在其中检查&lt;/a&gt; 在找到classe=" 之前不会出现

【讨论】:

  • 这正是我所需要的。非常感谢你!!!!!!
  • 那个正则表达式效果很好但是,我们最近发现那个正则表达式在 safari 上因为兼容性问题而中断。查看stackoverflow.com/questions/51568821/… 了解更多信息。解决方案是更改 (?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多