首页 > 解决方案 > 如何根据javascript中的规则对字符串应用正则表达式?

问题描述

我有一个看起来像这样的字符串

str = "<span> list: <mat> </span> && <span> see: how much <mat> </span> && <span> with: <mat> = '<pok>'</span>"

现在我想分别用和替换所有<和。但我也想确保标签不被触及。这就是我目前所做的>&lt&gt<span> </span>

str = str.replace(/\</g,"&lt;").replace(/\>/g,"&gt;")

但它用 and 替换了and 的每个<实例。可以有一个规则,除了标签之外的所有东西都需要被替换?>&lt&gtregex<span>

标签: javascriptregex

解决方案


我会匹配<[^>]+>(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, '&lt')
  .replace(/>/g, '&gt');

const result = str.replace(
  /<[^>]+>/g,
  match => (match === '<span>' || match === '</span>') ? match : escape(match)
);
console.log(result);


推荐阅读