You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则仅替换HTML字符串class属性内的指定类名

仅替换HTML中class属性内指定类名的解决方案

当前代码会把HTML文本内容里的目标类名字符串也一并替换,要实现只修改class属性范围内的类名,需要用带上下文断言的正则来精准匹配。

原问题代码

export const replace = () => {
  const htmlString =
  '<di class="class-to-replace">\n<div class="row">\n <p>class-to-replace</p></div>\n</di>';

  const className = 'class-to-replace';
  const classReplacement = 'new-class';
  const regex = new RegExp('\\b' + className + '\\b', 'g');

  return htmlString.replace(regex, classReplacement);
};

修改后的代码实现

通过正则的正向预查和反向预查,限定匹配范围仅在class="..."的引号内部:

export const replace = () => {
  const htmlString =
  '<di class="class-to-replace">\n<div class="row">\n <p>class-to-replace</p></div>\n</di>';

  const className = 'class-to-replace';
  const classReplacement = 'new-class';
  // 仅匹配class属性引号内的目标类名
  const regex = new RegExp(`(?<=class="[^"]*)\\b${className}\\b(?=[^"]*")`, 'g');

  return htmlString.replace(regex, classReplacement);
};

正则规则说明

  • (?<=class="[^"]*):正向预查,确保匹配位置处于class="开头的引号内部,前面是class属性的起始部分
  • \\b${className}\\b:匹配完整的目标类名单词,避免误匹配包含该类名的其他字符串(比如class-to-replace-extra)
  • (?=[^"]*"):反向预查,确保匹配位置仍在class属性的引号内部,后面是引号结尾部分

修改后,只会替换class属性中的class-to-replace,文本内容里的同名字符串不会被改动。

内容的提问来源于stack exchange,提问作者mati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:11:22