我要掩盖电话号码。它可以由数字、+(代表国家代码)和破折号组成。国家代码可以由1位或更多位数组成。我创建了这样的正则表达式来掩盖所有的数字,但最后的4位除外:
inputPhoneNum.replaceAll("\\d(?=\\d{4})", "*");用于这样的输入:+13334445678
我得到的结果是:+*5678
但是,它不适用于这样的输入:特别是+1-333-444-5678,它只返回相同的数字而不作任何更改。而所需的输出掩盖了除最后4位之外的所有数字,加上符号和破折号。这就是为什么我想知道如何将我的正则表达式更改为包含破折号?如有任何帮助,我将不胜感激!
发布于 2020-07-17 17:48:10
这就是我所用的,它可能是有用的,只是掩盖了一些数字在提供的数字。
/*
* mask mobile number .
*/
public String maskMobileNumber(String mobile) {
final String mask = "*******";
mobile = mobile == null ? mask : mobile;
final int lengthOfMobileNumber = mobile.length();
if (lengthOfMobileNumber > 2) {
final int maskLen = Math.min(Math.max(lengthOfMobileNumber / 2, 2), 6);
final int start = (lengthOfMobileNumber - maskLen) / 2;
return mobile.substring(0, start) + mask.substring(0, maskLen) + mobile.substring(start + maskLen);
}
return mobile;
}https://stackoverflow.com/questions/47409339
复制相似问题