首页 > 解决方案 > 电话号码检查的正则表达式不起作用

问题描述

我正在尝试使用正则表达式来检查电话号码。下面是我正在使用的代码:

phnum ='1-234-567-8901'
pattern =  re.search('^\+?\d{0,3}\s?\(?\d{3}\)?[-.\s]?d{3}[-.\s]?d{4}$',phnum,re.IGNORECASE)
print(pattern)

即使对于简单的数字,它似乎也不起作用。谁能纠正我哪里出错了?

标签: pythonpython-3.xregex

解决方案


这是一个潜在的解决方案。我不擅长正则表达式,所以我可能会遗漏一些东西。

import re

phone_pattern = re.compile(r"^(\+?\d{0,2}-)?(\d{3})-(\d{3})-(\d{4})$")
phone_numbers = ["123-345-6134",
                 "1-234-567-8910",
                 "+01-235-235-2356",
                 "123-123-123-123",
                 "1-asd-512-1232",
                 "a-125-125-1255",
                 "234-6721"]

for num in phone_numbers:
    print(phone_pattern.findall(num))

输出:

[('', '123', '345', '6134')]
[('1-', '234', '567', '8910')]
[('+01-', '235', '235', '2356')]
[]
[]
[]
[]

推荐阅读