javascript - 正则表达式捕获组的字符串长度 (JavaScript)
问题描述
是否可以在 JavaScript 中获取正则表达式捕获组的字符串长度?我想用星号替换实际密码捕获组的长度(即 $2)。
let urlRedacted = url.replace(/mongodb:\/\/(.+):(.+)@(.+)/, 'mongodb://$1:*****@$3');
上面只是用硬编码的五个*****
代替密码的实际长度($2)。
解决方案
使用回调函数将第二组放入一个变量中,然后.replace
是所有*
s 的组:
const url = 'mongodb://foo:bar@baz';
const censor = str => str.replace(/./g, '*');
// could also do
// const censor = str => '*'.repeat(str.length);
let urlRedacted = url.replace(
/mongodb:\/\/(.+):(.+)@(.+)/,
(_, g1, g2, g3) => `mongodb://${g1}:${censor(g2)}@${g3}`
);
console.log(urlRedacted);
推荐阅读
- html - 如何在导航栏中的“导航栏品牌”下移动“导航”元素
- swift - 在 Double 和 Int 之间转换时出错
- java - 使用箭头键控制连接到 TextField 的 JavaFX ContextMenu
- node.js - 为什么我们要避免在 Ubuntu 上使用 apt-get 安装 Node.js?
- string - 为什么可空 cursor.getString() 分配给不可空字符串编译?
- c# - 如何制作字符串变量文字?
- python - 用元素组合替换列表中的变量
- python - 获取 AttributeError:运行 cx_Freeze 可执行文件时,模块“tensorflow_estimator.python.estimator.api.estimator”没有属性“__file__”
- python - 从根类外部更改按钮颜色
- javascript - Reactjs 通过键和值过滤状态