现在网络越来越关注一些隐私,比如手机号隐藏当中的若干位数字,或隐藏身份证,银行卡号当中的若干长度为星号
对于一些固定长度的内容转换其实都挺方便的,但对于一些非定长的内容想保留固定尾部内容或者头部内容的话就比较麻烦了。
这两天发现很多朋友都不会写这个正则表达式,这里拿出来分享下
比如手机号只显示头尾的各3个数字,最简单的做法就是截取头部三个数字和尾部三个数字,然后当中插入5个星号就可以
这种做法显得比较笨拙,当然效率可能高一些,不过缺乏灵活性,比如人名显示姓,名字换成对应的*,那人名长度现在一般在2-4个字,具体后面跟多少个星号*,根据人数迭代啥的就麻烦点了
如果使用正则的话,就比较灵活,代码也比较简单。
假设对一串数字,保留头尾各3个数字,当中全部替换成*的话,代码如下:
String mobile = "13123456789"; String outMobile = mobile.replaceAll("(?<=\\d{3})\\d(?=\\d{3})", "*"); System.out.println(outMobile);
正则表达式的意思是,把所有前面有3个数字,后面有3个数字的数字换成*,那么于是从字符串中的2开始到7均在这个条件范围内,所以就全部替换了。
其他的可以根据这个灵活变换,当然如果反复这么调用的话,性能不是很高,所以建议参考replaceAll的源码,先生成Pattern对象,然后直接调用pattern.matcher(mobile).replaceAll("*");来操作,这样可以节省对象创建的内存及性能方面的消耗
相关推荐
因此,在实际应用中,建议根据具体需求调整正则表达式的写法。 2. **性能考虑**:频繁地使用正则表达式可能会对性能造成一定影响,尤其是在大量数据的处理上。因此,在设计时应当考虑到这一点。 3. **用户友好性**:...
1. 字面量写法:使用斜杠 `/` 表示正则表达式的开始和结束,例如 `/^\d+$/` 用来匹配一个或多个数字。 2. 内置构造函数写法:通过 `new RegExp('xyz')` 实例化一个正则表达式对象。 在JavaScript中,正则表达式提供...
在实现隐藏手机号码中间四位的过程中,我们将使用正则表达式来匹配手机号码的特定部分,并将其替换为星号(*)。在PHP中,preg_match()函数用于执行正则表达式的匹配操作,而preg_replace()函数则用于执行匹配后的替换...
要隐藏IP地址的后两位,我们可以使用PHP中的正则表达式函数来匹配并替换IP地址的最后两位数字为星号。正则表达式是一种强大的文本处理工具,可以用来搜索、匹配、替换文本中的特定模式。 在PHP中,`preg_replace` ...