2010-03-21 73 views
2

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「。

回答

2

您應該知道,國家代碼可能是3甚至4位數字。

詳情請參閱list of country calling codes

你之後的替換是上下文相關的,所以我猜測用單個正則表達式解決它是不可能的(以一種足夠簡單的方式使它實際可用)。然後,我不是一個正則表達式大師。

+0

該死的。我不知道。 猜猜這使得這幾乎不可能取消,我只是讓它取代+ 00然後 – DarkFox

+0

這也許是不正確的,如果你擔心它爲別人工作,也就是說。 – msw

+0

我的主要問題是我的聯繫簿中的所有電話號碼都是格式爲+45的數字......但我的SIP提供商僅支持0045 ... – DarkFox