java - 正则表达式编号

标签 java regex

我的目标是将下一个数字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"));
}

Live Example

操作:

011-22-22-22-22

PS:这种方法不应该在产品环境中使用,它的编写只是为了满足我自己的固执,即这个问题可以使用一个正则表达式来解决。

关于java - 正则表达式编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39204637/

相关文章:

java 。抽象元素列表。如何确定元素类型

javascript - 使用 RegExp 匹配多个实例并存储值 (JavaScript)

mysql - 使用 REGEXP 的“高级”Mysql 查询

regex - 即使使用正确的正则表达式,HTML 模式也不起作用

javascript - 将 spring java 对象传递给 javascript

java - eclipse 远程调试

匹配特定域及其子文件夹的正则表达式

.net - 字符串正则表达式的结尾是否在 .NET 中进行了优化?

java - 对我的代码进行测试并收到意外的答案

java - HQL查询中的 hibernate 表未映射错误