在JavaScript中匹配除特定模式之外的所有内容
经过多次搜寻,我还是被难住了。除了与给定模式匹配的内容外,如何匹配字符串中的所有内容 我已经找到了使用在JavaScript中匹配除特定模式之外的所有内容,javascript,regex,Javascript,Regex,经过多次搜寻,我还是被难住了。除了与给定模式匹配的内容外,如何匹配字符串中的所有内容 我已经找到了使用^或否定前瞻否定特定单词或字符集的解决方案,但我需要一个否定与特定模式匹配的任何内容的解决方案 示例文本(html片段): abcd efg hijkl xxx nop qrst uv wxyz。 我想匹配除整个span标记以外的所有内容。i、 除了 /<span.*?<\/span>/ /您始终可以在正则表达式上拆分文本,如下所示: var text='abcd efg
^
或否定前瞻否定特定单词或字符集的解决方案,但我需要一个否定与特定模式匹配的任何内容的解决方案
示例文本(html片段):
abcd efg hijkl xxx nop qrst uv wxyz。
我想匹配除整个span标记以外的所有内容。i、 除了
/<span.*?<\/span>/
/您始终可以在正则表达式上拆分文本,如下所示:
var text='abcd efg hijkl xxx nop qrst uv wxyz'
console.log(
text.split(/console.log('abcd efg hijkl xxx nop qrst uv wxyz')。替换(/]*>/g');
//或变体#2
console.log('abcd efg hijkl xxx nop qrst uv wxyz')。替换(/\s?/g');
以这种方式使用正则表达式是非常幼稚的,而且容易产生不必要的副作用。我的建议是使用内置的DOM API
创建一个包装器元素,将innerHTML
属性的值设置为输入字符串,查询有问题的元素的包装器元素,删除有问题的元素,然后返回innerHTML
属性的值
下面是一个例子:
const input=“abcd efg hijkl xxx nop qrst uv wxyz。”;
常量func=input=>{
const wrapper=Object.assign(document.createElement('div'),{innerHTML:input});
wrapper.querySelector('.skipMe').remove()
返回wrapper.innerHTML;
};
console.log(func(input));
您的目标是获得一个没有该标记的字符串吗?在这种情况下,您可以执行如下操作:str.replace(/]+(>|$)/g,”)
/<span.*?<\/span>/
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, ''));