正则如何匹配第N位到第M位的字符?

例如有一个字符串 abcdefghijklmn,长度可能不是固定的

我要将 开始第三位 到 倒数第三位 之间的字符转换成其他字符如 *

结果为 abc********lmn

我知道不用正则也可以实现,那么用正则该如何写呢?

阅读 17.3k
4 个回答
var str = "abcdefghijklmn";
str = str.replace(/^(\w{3})(\w*)(\w{3})$/, function (all,u1,u2,u3){
  return u1 + new Array(u2.length+1).join('*') + u3;
});
console.log(str);;
var str = "abcdefghijklmn";
str = str.replace(/(\w{3})\w*(\w{3})/, '$1********$2');
console.log(str);
//abc********lmn
var str = "abcdefghijklmn";
str = str.replace(/^(.{3})(.*)(.{3})$/g, function(m, m1, m2, m3) {
    return m1 + '*'.repeat(m2.length) + m3;
});
console.log(str);

额。。。^..(.....) 像这样?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进