javascript - 如何根据javascript中的规则对字符串应用正则表达式?
问题描述
我有一个看起来像这样的字符串
str = "<span> list: <mat> </span> && <span> see: how much <mat> </span> && <span> with: <mat> = '<pok>'</span>"
现在我想分别用和替换所有<
和。但我也想确保标签不被触及。这就是我目前所做的>
<
>
<span> </span>
str = str.replace(/\</g,"<").replace(/\>/g,">")
但它用 and 替换了and 的每个<
实例。可以有一个规则,除了标签之外的所有东西都需要被替换?>
<
>
regex
<span>
解决方案
我会匹配<[^>]+>
(a <
,最后是 a >
),然后如果当前匹配不是,则使用替换函数来转义括号<span>
或</span>
:
const str = "<span> list: <mat> </span> && <span> see: how much <mat> </span> && <span> with: <mat> = '<pok>'</span>";
const escape = str => str
.replace(/</g, '<')
.replace(/>/g, '>');
const result = str.replace(
/<[^>]+>/g,
match => (match === '<span>' || match === '</span>') ? match : escape(match)
);
console.log(result);
推荐阅读
- javascript - 来自cloudfunctions中nodemailer中firebase的变量
- kubernetes - 让 kube 作业在等待的 pod 上启动
- c# - c# Dijkstra邻接表实现
- slack - 使用 Slack 斜杠命令运行本地应用程序
- html - 使用模态会导致我的“范围”重置
- angular - HostListener 慢速应用程序,检查每个像素的窗口调整大小事件
- c# - 使用原始以太网字节的 TCP 协议
- passenger - 如何在 Phusion 乘客重启时处理应用程序清理?
- mysql - 如何构建一个 SQL 来查找每个产品在不同日期和时间的 MAX?
- c# - C# - 强制窗口延迟 20 秒左右以实现蓝牙未连接