经过多次搜索,我仍然难过。如何匹配字符串中的所有内容,除了与给定模式匹配的内容。
我找到了使用^
或负面预测来否定特定单词或字符集的解决方案,但我需要一个解决方案来否定与特定模式匹配的任何内容。
示例文本(html片段):
abcd efg hijkl <span class='skipMe'>xxx</span> nop qrst uv wxyz.
我希望匹配除整个span标记之外的所有内容。即除了
之外的一切/<span.*?<\/span>/
任何线索都表示赞赏。
答案 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, ''));
答案 2 :(得分:0)
以这种方式使用正则表达式非常幼稚,容易产生不必要的副作用。我的建议是使用内置的DOM API。
创建一个包装元素,将innerHTML
属性的值设置为输入字符串,查询相关元素的包装元素,删除有问题的元素,然后返回{{1}的值} property。
以下是一个例子:
innerHTML
&#13;
这种方法的一个警告是HTML被传递给解析器,因此如果HTML无效,scary things will happen