我需要一个代码来使用正则表达式来掩盖String。 需要屏蔽长度大于或等于4的数字。
public class Mask{
String data="+918033667777,,,2,,,4937015106932345,,,1,3,,,,467298364729038,,24789438292,,7979,,,,,,,1,,1";
public static void main(String[] args){
data = data.replaceAll("(?<=\\D)\\d{4}(?=\\D)", "****").replaceAll("\\d{12}(?=\\d{4})", "************");
System.out.println(data);
}
}
输出:+918033667777 ,,, 2 ,,, *************** ,,, 1,3 ,,,, *********** **** ,, *********** ,, **** ,,,,,,, 1,1" i,我需要屏蔽长度大于或等于4的数字。
答案 0 :(得分:4)
尝试:
(?<=,)\d(?=\d{3,})|(?!\A)\G\d
(?<=,)
- 逗号的正面观察\d(?=\d{3,})
- 数字后跟另外三位数字(正数
超前)(?!\A)\G\d
- 检查匹配是否从前一个匹配停止的地方继续,然后是数字,(?!\A)
是否与字符串中的第一个数字不匹配。但是,如果您不想仅匹配前面带有+
的数字,那么这是多余的Java中的示例:
public class Test{
public static void main(String[] args){
String data="+918033667777,,,2,,,4937015106932345,,,1,3,,,,467298364729038,,24789438292,,7979,,,,,,,1,,1";
data = data.replaceAll("(?<=,)\\d(?=\\d{3,})|(?!\\A)\\G\\d", "*");
System.out.println(data);
}
}
带输出:
918033667777 ,,, 2 ,,, **************** ,,, 1,3 ,,,, ************ *** ,, *********** ,, **** ,,,,,,, 1,...,1