有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java8中屏蔽SSN的正则表达式

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");

在正则表达式中显示错误。替换(无法解析正则表达式)。我正在使用Java8。请帮忙。谢谢


共 (1) 个答案

  1. # 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
        }