繁体   English   中英

使用正则表达式获取不在特定html标记中的字符串

[英]Getting string not in specific html tag with regexp

我有这串

@test <span class="mention">@test</span> @test2 <span class="mention">@test</span>`

我想匹配所有以Java跨度之外的@符号开头的单词

我创建了RegExp以匹配跨度对象

/<span class="mention"((.*)data-mention="\d+")?>@\w+<\/span>/g

但我只是想不出如何使元素不在span元素内!

这是尝试提取所需的

正则表达式

/(@\w+\b)(?![^>]*?<\/span>)/g

测试字符串

@test <span class="mention">@test</span> @test2 <span class="mention">@test</span>`

结果

  • 比赛1
      1. [0-5] @test
  • 比赛2
      1. [41-47] @test2

演示版

在这里尝试演示

请注意,这不是万无一失的解决方案,它只是基于您的测试字符串。

不要使用正则表达式。 它是HTML,因此请使用DOM操作方法:

var s = '@test <span class="mention">@test</span> @test2 <span class="mention">@test</span>';

var e = document.createElement("div");
e.innerHTML = s;
var spans = e.getElementsByTagName("span");
while (spans.length > 0) {
    e.removeChild(spans[0]);
}
console.log(e.innerHTML);

http://jsfiddle.net/mzny7857/

这将为您留下@test @test2 ,您可以将其拆分或与正则表达式匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM