标准化国际电话号码代码只使用正则表达式

时间:2010-03-21 16:13:32

标签: java regex phone-number

Android上的Sipdroid有一个搜索&替换方法,使用正则表达式。 我正在尝试使用它来确保所有拨出的电话都有00XX格式的国家/地区代码

如果没有国家/地区代码,我还希望它将0045放在号码前面。

第一个,我已经解决了,但我无法弄清楚如何做第二件事。

搜索

\A(((\+)(\d{2})?)|(00(\d{2})?)|)((\d|\s)+)\Z

替换

00$4$6$7

我正在使用http://www.regexplanet.com/simple/index.html来测试它,测试字符串为:“12345678”,“+ 4512345678”和“004512345678” 他们都应该返回“004512345678”。

1 个答案:

答案 0 :(得分:3)

您应该知道国家/地区代码的长度可能是3位甚至4位。

有关详细信息,请参阅list of country calling codes

你所追求的替代是非常上下文敏感的,所以我猜想用一个正则表达式解决它是不可能的(以一种简单的方式使其实际可用)。再说一遍,我不是一个正则表达的大师。