字符串处理工具:根据正则表达式查找指定类型(手机号、身份证号,邮件地址,ip地址)字符串并处理
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringHandling{
public static void main(String[] args) {
String s = "我的手机号是18893638459,曾经用过18518717121,还用过18700738030,我的证件号码是:612529190407080105,我的邮件商户是:1037532@qq.com,当前使用的ip是:192.168.2.1";
s = handlingStringsByRegex(s);
System.out.println("newslogInfo:" + s);
}
private static String handlingStringsByRegex(String str) {
String emailRegex = "\\w+@\\w+\\.(com\\.cn)|\\w+@\\w+\\.(com|cn|net)";
String phoneNoRegx = "(?<!\\d)(?:(?:1[358]\\d{9})|(?:861[358]\\d{9}))(?!\\d)";
String IDRegex = "\\d{17}[\\d|x]|\\d{15}";
String ipRegex = "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)";
String[] regexArr = {phoneNoRegx, IDRegex, emailRegex, ipRegex};
for (int i = 0; i < regexArr.length; i++) {
Pattern pattern = Pattern.compile(regexArr[i]);
Matcher matcher = pattern.matcher(str);
String newStr = "";
while (matcher.find()) {
String matchData = matcher.group();
switch (i) {
case 0:
newStr = matchData.replace(matchData.substring(5), "******");
break;
case 1:
newStr = matchData.replace(matchData.substring(9), "*********");
break;
case 2:
newStr = matchData.replace(matchData.substring(7), "*******");
break;
case 3:
newStr = matchData.replace(matchData.substring(5), "*********");
break;
}
str = str.replace(matchData, newStr);
}
}
return str;
}
}