深入Python給出了一個驚人的小教程創建爲電話號碼的正則表達式:http://diveintopython3.ep.io/regular-expressions.html#phonenumbers電話號碼正則表達式(正則表達式)在Python
最終版本出來的樣子:
phone_re = re.compile(r'(\d{3})\D*(\d{3})\D*(\d{4})\D*(\d*)$', re.VERBOSE)
這幾乎適用於我可以想到的所有示例,但是我發現了一個很大的故障,我似乎無法修復。
如果一組3位數字出現在電話號碼前面,它可以正常工作。 IE: 「500美元關閉,請致電123-456-7891」
如果一組3位數字出現在電話號碼後面,則失敗。 IE: 「致電123-456-7891可享受高達500的折扣」
有關適用於兩個示例的修復的任何建議?
我總是很驚訝網絡社區中的尊重人士如何給出有缺陷的(即以美國爲中心)建議。這可能是一個很好的學術示例,可以爲正則表達式提供初學者的實用感受,但是您不應該在實際應用中使用它。世界各地的電話號碼都不一樣。 – Tomalak 2010-08-14 19:13:54
更具體地說,如果您從未計劃在除美國以外的任何地方使用您的應用程序,則應僅在應用程序中使用它。 – Amber 2010-08-14 19:14:31
甚至沒有,因爲不是每個人都可能像他們應該格式化一個電話號碼。 – Joey 2010-08-14 19:16:11