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.请帮忙。感谢。
答案 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
}