600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 使用正则表达式为手机号码或身份证号码打星号

使用正则表达式为手机号码或身份证号码打星号

时间:2020-02-12 17:31:33

相关推荐

使用正则表达式为手机号码或身份证号码打星号

首先正则表达式的匹配方式是凡是符合的字符都获得,所以对于手机号

(?<=[\d]{3})\d(?=[\d]{4})

这样一个表达式就可以只保留前三位和后四位

但是!这个表达式在百度搜索出的所有正则表达式在线测验中都是不能通过的,不知道为什么所有(?<=)这个表达式都是不支持的,晕。

大体讲解一下这个表达式的含义

[\d]{3}的意思是三个数字(?<=)的意思是前面匹配但不保留,比如ILOVEYOULOVEME,(?<=I).{5}的结果只有LOVEY而没有LOVEM,也没有I

所以目前连起来的条件可以表达为要求的数字必须满足前面有三个数字

(?=)的意思跟(?<=)恰好相反后面匹配但不保留,比如ILOVEYOULOVEME,.{5}(?=ME)的结果只有ULOVE,没有ME

最后条件连起来就是要求的数字必须满足前面有三个数字,且后面有4个数字。

假设手机号码为12345678910,则满足这一条件的数字为4和5和6和7。之所以用和,是想提醒最后的得到的数字不是4567而是分开的,代码中替代时只要替代一个“*”就好,因为会替代4次。

Java代码

String s = "15678901234";s = s.replaceAll("(?<=[\\d]{3})\\d(?=[\\d]{4})", "*"); //这里*只要一个,因为会替代多次,每次一个。System.out.println(s);

结果就是

156****1234

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。