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

如何编写函数结合正则表达式修改特殊字符包裹单词的颜色?

解决特殊字符包裹内容的颜色修改问题

嘿,我明白你遇到的麻烦了——要精准匹配方括号里的内容确实容易踩正则的坑,我来给你一步步解决:

第一步:构建正确的正则表达式

你需要的正则要满足两个核心要求:

  • 匹配被[和]包裹的内容(注意这两个是正则特殊字符,必须转义成\[和\])
  • 支持匹配包含空格的内容,同时避免“贪婪匹配”把多个方括号的内容连在一起

正确的正则表达式是:

/\[(.*?)\]/g
  • \[(.*?)\]:捕获[和]之间的所有内容,.*?是非贪婪匹配,会在遇到第一个]时停止,完美适配你例子里的[Sample]和[sample words]
  • g修饰符:全局匹配所有符合条件的内容,不会只改第一个匹配项

第二步:编写处理函数

以网页环境为例(用HTML的<span>标签修改颜色),下面是JavaScript的实现:

function colorizeBracketedText(str, color = 'red') {
  // 用正则替换所有匹配项
  return str.replace(/\[(.*?)\]/g, `<span style="color: ${color}">$1</span>`);
}

测试你的示例

把你给的字符串传进去:

const originalStr = "This is a [Sample] String containing [sample words]";
const coloredStr = colorizeBracketedText(originalStr);
console.log(coloredStr);

输出结果会是:

This is a <span style="color: red">Sample</span> String containing <span style="color: red">sample words</span>

在网页里渲染后,方括号里的内容就会变成红色啦。

如果你用Python的话

这里也给你写个Python版本的实现:

import re

def colorize_bracketed_text(input_str, color='\033[91m'):
    # 终端用ANSI颜色码,网页的话换成HTML标签即可
    reset_color = '\033[0m'
    # 正则替换
    return re.sub(r'\[(.*?)\]', f'{color}\\1{reset_color}', input_str)

# 测试
original_str = "This is a [Sample] String containing [sample words]"
print(colorize_bracketed_text(original_str))

这个版本在终端里运行的话,方括号内容会变成红色。

小提示

如果你的特殊字符不是方括号,只需要修改正则里的\[和\]为对应的字符就行,比如要匹配{}包裹的内容,就改成/{(.*?)}/g。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:52:35