用于在java 8中屏蔽SSN的正则表达式

时间:2018-04-15 16:39:19

标签: java

import java.util.*;
import java.util.regex.*;

String input = "456-67-8901";

String pattern = "^\\d{3}[- ]?\\d{2}[- ]?\\d{4}$";
String result = Regex.Replace(input, pattern, "XXX-XX-$1");

在Regex.Replace上显示错误(无法解析正则表达式)。我用java 8.请帮忙。感谢。

1 个答案:

答案 0 :(得分:1)

你想要这样的东西,把XXX-XX-放在前五位数的位置。我用两个捕获组修改了你的正则表达式,这样前五个数字将由m.group(1)返回。您对m.group(2)感兴趣。见下文:

    String input = "456-67-8901";

    Pattern p = Pattern.compile("^(\\d{3}[- ]?\\d{2}[- ]?)(\\d{4})$");
    Matcher m = p.matcher(input);
    if (m.matches()) {
        System.out.println("XXX-XX-" + m.group(2));
    } else {
        // bad input
    }