深入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