如何在java android中为手机号码创建正则表达式?

时间:2016-10-23 14:52:27

标签: java android regex

我知道这种问题并不常见,但如果有人能帮助我,我会很感激。 我试图解析包含电话号码的长字符串。共有3种数字,这里只是这3种情况的例子: 603333332222 00603333332222 03333332222

假设我们有这样的字符串: + 603333332222006033333322220333333222200603333332222 + 603333332222

现在我想要的是将这个长字符串分成与模式匹配的单个字符串,因此输出将为:

+ 603333332222,00603333332222,03333332222,00603333332222,+ 603333332222

如果难以回答或有很好的学习来源,请帮助我。

感谢

更新:

有3种常客:

  1. 60
  2. 0060
  3. 06
  4. 并且长度始终如下:

    1. 13
    2. 14
    3. 11

2 个答案:

答案 0 :(得分:2)

好吧,正如Rippr指出的那样,Regex可能不是最好的方式,但它可能仍然有用。你应该首先编写3个正则表达式(每个格式一个),然后将它们与OR结合 - 可能是这样的。

如果10位数字中有0或0060,您仍会感到恼火。

(0060|\+60|0)[0-9]{10}

但是,您可以使用if / else树解析字符串,如下所示:

If +60 at start of the remainings of the string then then  
   format is +60[10 digits number]
   Store this phone number somewhere and processus the remainings char of the string
If 0060 at start of the remainings of the string then
  format is 0060[10 digits number]
  Store the number and continue proccessing
Else
  Format is 0[10 digits number]
  Store it and process the rest

或者使用前面带有^的给定正则表达式解析字符串,然后从中删除每个第一个数字标识符并循环

答案 1 :(得分:1)

您可以使用SubString分隔以+开头的数字。至于其他2,这是不可能的......我的意思是,给定:

1234567890123456789012345

你怎么知道它是12345678901和23456789012345

或12345678901234和56789012345?