java字符串包含手机号、身份证等敏感信息进行脱敏,敏感信息前后存在不确认位数的中文和符号,正则写法

字符串中包含敏感信息进行脱敏,这种正则要怎么写,求大佬帮忙

例如1:今天我拨打了18888888888的热线号码,询问个人账户余额并提供身份证111111111111111111等信息

想得到结果:今天我拨打了188****8888的热线号码,询问个人账户余额并提供身份证11111********11111等信息

例如2:公文号{2710},数字号3811,申请人手机和身份证16666666666,123456789876543212

想得到结果:公文号{2710},数字号3811,申请人手机和身份证166****6666,123456********3212

这个比较麻烦,你私信我,我给你说说具体的。

取字符串长度:str.lenth()-1,取长度中间数(str.lenth()-1)/2,对前后几个位置做字符替换,str.replace