Java 正则替换匹配的部分内容

String tel = "13800138000";
// 括号表示组,被替换的部分$n表示第n组的内容
tel = tel.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
System.out.print(tel);


//JS写法
function fn(phone) {
    phone = phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
    return phone;
}

原理解析: 正则表达式中,替换字符串,括号的意思是分组,在replace()方法中,参数二中可以使用$n(n为数字)来依次引用模式串中用括号定义的字串。"(\d{3})\d{4}(\d{4})", "$1****$2"的这个意思就是用括号,分为(前3个数字)中间4个数字(最后4个数字)替换为(第一组数值,保持不变$1)(中间为*)(第二组数值,保持不变$2)