let str = '<span>我是小s</span><span class="show">s</span>'
不匹配标签里的s和类名为show的标签内容s?
结果:只找出“我是小s”中的“s”
let str = '<span>我是小s</span><span class="show">s</span>'
不匹配标签里的s和类名为show的标签内容s?
结果:只找出“我是小s”中的“s”
const reg = />[^<]*s[^<]*</g
const result = '<span>我是小s</span><span class="show">s</span>'.match(reg)
console.log(result)
const result2 = '<span>我是小sfo</span><span class="show">s</span>'.match(reg)
console.log(result2)
const result3 = '<span>sfo</span><span class="show">s</span>'.match(reg)
console.log(result3)
我也写写我的思路
[ '>我是小s<', '>s<' ]
[ '>我是小sfo<', '>s<' ]
[ '>sfo<', '>s<' ]
有点尴尬,没有去掉“>”“<”,你自己分个组捕获吧
这么复杂的字符串匹配正则表达式:写起来难,自测也很难完善,尤其后期维护更困难。其他同事如果看到这个正则表达式估计心里先来句“我艹,这坨啥意思”。
还是想想有没有其他方案吧,比如可以借助document
的能力:
// 以jQuery为例
var result = $('<span>我是小s</span><span class="show">s</span>')
.filter((i, span) => {
return span.innerText.trim() !== 's'
})
.text();
// 我是小s
console.log(result)
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答4.9k 阅读✓ 已解决
1 回答3.3k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决