簡體   English   中英

正則表達式從字符串中獲取電話號碼掩碼

[英]Regexp for get phone number mask from 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

我的正則表達式非常基本,因此可能會有更好的方法,但是類似( )?-( )? ,其中空格( )是可選組可能會有所幫助,例如...

String pattern = "( )?-( )?";
String values = "+7312111111 - +7312222222-+7312333333-+7312444444- +7312555555 -+7312666666";
String parts[] = values.split(pattern);
for (String part : parts) {
    System.out.println(part);
}

會輸出...

+7312111111
+7312222222
+7312333333
+7312444444
+7312555555
+7312666666

您甚至可以使用類似([ ]+)?-([ ]+)? 如果空格數未知或您可以使用-trim結果,例如...

String values = "+7312111111 - +7312222222-+7312333333-+7312444444- +7312555555 -+7312666666   -   +731277777";
String parts[] = values.split("-");
for (String part : parts) {
    System.out.println(part.trim());
}

更新...

您可以使用\\+7312[0-9]+([ ]+)?-([ ]+)\\+7657[0-9]+來查找可能的匹配項...

String value = "+7312111111 - +7657222222-+7312333333-+7312444444- +7312555555 -+7312666666   -   +731277777";
Pattern p = Pattern.compile("\\+7312[0-9]+([ ]+)?-([ ]+)\\+7657[0-9]+");
Matcher m = p.matcher(value);
while (m.find()) {
    value = m.group();
}

對於每個匹配的組,您可以只使用value.split("-")來將兩個元素分開,如前所述。

您可以使用以下代碼提取:

String somestring="+7312xxxx - +7657xxxx";
  somestring=somestring.replaceAll(" ", "");
  String[] array=somestring.split("-");
  for(String s : array)
  {
      System.out.println(s.substring(1));
  }

您也可以將值存儲到變量中。

您將獲得以下輸出:

7312xxxx
7657xxxx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM