tagtag
0D
V2EX  ›  正则表达式

正则菜鸟求教

By tagtag at 2022 年 7 月 20 日 · 1806 次点击
一段文本:
<span>target</span> target <div>target</div>

我想只替换没有被标签包裹的 target ,如果被标签包裹则忽略,应该怎么匹配啊,感谢感谢。
第 1 条附言  ·  2022 年 7 月 20 日
用左右两个环视的方法 (?<!>)target(?!<\/.+>) 虽然不太严谨,但是能满足我的需求了。
5 条回复  •  2022-07-20 17:21:34 +08:00
xiangyuecn
   1
xiangyuecn  
   2022 年 7 月 20 日
'<span>target</span> target <div>target</div>'.replace(/(<\/\w+>)([^<]+)(<(?!\/))/, "$1 服不服 $3");
tagtag
   2
tagtag  
OP
   2022 年 7 月 20 日
@xiangyuecn 感谢,但是这个好像不能通用,用分组应该不行。
duan602728596
   3
duan602728596  
   2022 年 7 月 20 日   ❤️ 1
这种 html 的处理不推荐使用正则,建议转换成树处理。浏览器内原生使用 DOMparser ,node 端推荐用 jsdom 。
autoxbc
   4
autoxbc  
   2022 年 7 月 20 日
所有正则教程都应该告诉用户「什么情况下不要用正则」
lululau
   5
lululau  
   2022 年 7 月 20 日
楼上说得对,其实这题他不会
© 2026 V2EX · 37ms · 3.9.8.5