java - 用于从字符串获取电话号码掩码的正则表达式

标签 java regex string

我有一个电话号码范围的字符串,看起来像“+7312xxxx - +7657xxxx”(x 和 - 之间的空格可能是也可能不是)。我需要剪切这个字符串并得到带有“7312xxxx”和“7657xxxx”的字符串。我尝试一步一步,一个字符一个字符地完成,但这非常愚蠢和困难,我想我可以用正则表达式来做到这一点,如下所示

String somestring="+7312xxxx - +7657xxxx";
String[] array=somestring.split("\someregexppattern");

但我不知道如何构建真正的正则表达式。请告诉我怎么做。

编辑:感谢所有帮助我并给我答案的人,但我想知道哪种方式更快?用正则表达式还是用“-”分割?

最佳答案

您可以尝试以下正则表达式,

^([^-]*)-(.*)$

Java 正则表达式是,

"^([^-]*)-(.*)$"

DEMO

第一个捕获组包含 - 之前的所有数字,第二个捕获组包含 - 之后的所有数字

要仅获取第一个和第二个不带空格的数字,

String s = "+7312xxxx - +7657xxxx";
    Pattern p = Pattern.compile("^([^\\s-]*)\\s*-\\s*(.*)$");
    Matcher m = p.matcher(s);
    while (m.find()) {
      System.out.println(m.group(1));
      System.out.println(m.group(2));
    }

输出:

+7312xxxx
+7657xxxx

Ideone

关于java - 用于从字符串获取电话号码掩码的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24568525/

相关文章:

java - 如何使用 Java/Android 与 REST API 进行通信?

java - 使用自定义适配器在 ListView 中选择/突出显示多个项目 - Android

c++ - Memcpy、字符串和终止符

java - 如何将以下字符串转换为日期对象?

java - TomEE : How to configure multiple datasources?

java - 如何从声明 JFrame 的类之外的类中关闭 JFrame

javascript - 正则表达式更改自定义单词

java - java 两个特定单词之间的文本

Java 正则表达式捕获组

javascript - 如何从 Javascript 中的字符串中删除/替换 ANSI 颜色代码