2011-10-23 58 views
1

我試圖讓正則表達式驗證格式+38(0XX)XXX-XX-XX或0XX-XXX-XX-XX格式的電話號碼。我的正則表達式是:'^(\+38)*(\(*0\d{2}\)*)[-|\s](\d{3})[-|\s]((\d{2})-|\s)+$'。它沒有任何匹配。我幾次重讀re的語法,無法弄清楚如何使它正確。正確的Python regex

+0

看來你的意思是'+38(0XX)-XXX-XX-XX'通過查看你的正則表達式。 –

回答

1

更新:使正則表達式嚴格按照註釋進行匹配。

此正則表達式應該根據自己的需求

^((\+38)?\(0\d{2}\)|0\d{2})[-\s]\d{3}([-\s]\d{2}){2}$ 

這符合+38(022)-333-33-44(022)-333-33-44022-333-33-44

+0

這也將匹配022-333-33-44-77-33-44-23-56和045 333 44-37 :) – scriptmonster

+0

@scriptmonster OP有'+'結尾,我不想改變他的正則表達式完全。如果需要,他可以根據需要用'{2}'或'{3}'替換'+'。也看起來像OP的正則表達式同時具有'-'和'\ s'作爲可能的分隔符。 –

+0

嗯,但它會匹配+38(022-333-33-44,+ 38022)-333-33-44和+ 38022-333-33-44。 我不認爲他知道這一點。 – scriptmonster

1

這是另一種選擇工作。它會查找您提到的確切格式。

'^(\+38\(0\d{2}\)\d{3}(-\d{2}){2})|(0\d{2}-\d{3}(-\d{2}){2})$'