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

时间:2014-08-28 03:12:50

标签: javascript regex

我有这个字符串

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

我想在Javascript

中匹配以span开头的所有单词开头

我创建了用于匹配span对象的RegExp

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

但我不知道如何获取不在span元素内的元素!

2 个答案:

答案 0 :(得分:2)

这是尝试提取所需的

<强>正则表达式

/(@\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

<强>演示

尝试demo here

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

答案 1 :(得分:0)

不要使用正则表达式。它是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,然后可以使用正则表达式进行拆分或匹配。