我的目标是将下一个数字01122222222
格式化为此011-22-22-22-22
前三个数字、破折号以及第二个后面带有破折号的所有后续数字。已经尝试过:
private String phoneFormat(String phoneNumber){
String regex = "\\B(?=(\\d{3})+(?!\\d))";
String formattedPhone = phoneNumber.replaceAll(regex, Constants.Characters.DASH);
return formattedPhone;
}
但它会产生不同的结果。
最佳答案
正则表达式就可以解决问题。将 2 位数字替换为“-[数字][数字]”,只要前面有 3 位数字即可。
public static void main(String[] args) {
String s = "01122222222";
System.out.println(s.replaceAll("(?<=\\d{3})(\\d{2})+?", "-$1"));
}
操作:
011-22-22-22-22
PS:这种方法不应该在产品环境中使用,它的编写只是为了满足我自己的固执,即这个问题可以使用一个正则表达式来解决。
关于java - 正则表达式编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39204637/