匹配美国电话号码的正则表达式

1 投票
1 回答
2896 浏览
提问于 2025-04-18 14:37

我有一些(算是)能用的代码,用来匹配美国的电话号码,格式是:###-###-####

问题是,我的代码在处理每个phone_number时,都是直接进入else的部分:

file = open("results.txt", "w")
rgxpattern = '^[0-9]{3}-[0-9]{3}-[0-9]{4}$'
regexp = re.compile(rgxpattern)

for phone_number in phone_numbers:
    phone_number = str(phone_number)
    if regexp.match(phone_number):                      
        file.write('\n')
        file.write(str(phone_number))
    else:
        file.write('BAD#')

我上面的正则表达式(rgxpattern)是不是有什么问题?我试过用:

^[0-9]{3}-[0-9]{3}-[0-9]{4}$

还有

^\d{3}-\d{3}-\d{4}$

示例电话号码:

 111-222-3333  
 777-444-4444  

结果摘录:

BAD#BAD#BAD#BAD#

有什么想法或者帮助吗?

1 个回答

6

如果你的“示例电话号码”是正确的,那么每个电话号码前后都有空格,这样可以解决问题:

^\s*\d{3}-\d{3}-\d{4}\s*$

撰写回答