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

如何使用Javascript正则批量脱敏字符串中的多个参数值

问题原因

你当前使用的正则/(.*--user=)(\s*)([^]*)/中,末尾分组[^]*会匹配--user=后的所有剩余字符,替换规则$1XX$2只保留了前两个分组加XX,因此会丢失--host、--database等后续所有内容。

解决代码

你可以通过全局匹配指定参数名的键值对实现多参数脱敏,示例如下:

const originStr = "mysql --user=USER_NAME --host=DB_HOST --database=SCHEMA -p -e 'SELECT";
// 固定脱敏内容,匹配期望输出
const desensitized = originStr.replace(/--(user|host|database)=([^\s]+)/g, (match, key) => {
  const maskMap = {
    user: 'XX',
    host: 'XXXXXX',
    database: 'XXXX'
  };
  return `--${key}=${maskMap[key]}`;
});
console.log(desensitized);
// 输出:mysql --user=XX --host=XXXXXX --database=XXXX -p -e 'SELECT

正则说明

  • /--(user|host|database)=([^\s]+)/g 为全局匹配规则
  • 括号(user|host|database)匹配需要脱敏的三个参数名
  • ([^\s]+)匹配参数值(到空白符为止,不会截断后续内容)
  • 回调函数根据匹配到的参数名返回对应脱敏后的键值对,其余内容全部保留

如果你需要根据原值长度动态生成脱敏字符,只需要修改回调逻辑即可:

const desensitized = originStr.replace(/--(user|host|database)=([^\s]+)/g, (match, key, value) => {
  return `--${key}=${'X'.repeat(value.length)}`;
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:15:02