匹配JavaScript中除特定模式之外的所有内容

时间:2017-03-15 13:03:18

标签: javascript regex

经过多次搜索,我仍然难过。如何匹配字符串中的所有内容,除了与给定模式匹配的内容。

我找到了使用^或负面预测来否定特定单词或字符集的解决方案,但我需要一个解决方案来否定与特定模式匹配的任何内容。

示例文本(html片段):

abcd efg hijkl <span class='skipMe'>xxx</span> nop qrst uv wxyz.

我希望匹配除整个span标记之外的所有内容。即除了

之外的一切
/<span.*?<\/span>/

任何线索都表示赞赏。

3 个答案:

答案 0 :(得分:1)

您可以随时在正则表达式中拆分文本:

var text = 'abcd efg hijkl <span class="skipMe">xxx</span> nop qrst uv wxyz.'

console.log(
  text.split(/<span.*?<\/span>/)
)

答案 1 :(得分:0)

console.log('abcd efg hijkl <span class=\'skipMe\'>xxx</span> nop qrst uv wxyz.'.replace(/<(|\/)span[^>]*>/g, ''));

//OR variant #2

console.log('abcd efg hijkl <span class=\'skipMe\'>xxx</span> nop qrst uv wxyz.'.replace(/\s<span.+span>?/g, ''));

SEE

答案 2 :(得分:0)

以这种方式使用正则表达式非常幼稚,容易产生不必要的副作用。我的建议是使用内置的DOM API。

创建一个包装元素,将innerHTML属性的值设置为输入字符串,查询相关元素的包装元素,删除有问题的元素,然后返回{{1}的值} property。

以下是一个例子:

&#13;
&#13;
innerHTML
&#13;
&#13;
&#13;

这种方法的一个警告是HTML被传递给解析器,因此如果HTML无效,scary things will happen