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

Cod*_*alk 1 python regex

我有一些(有点)工作代码可以按以下格式匹配位于美国的电话号码: ###-###-####

问题是,我的代码只是击中else在我的代码块为每个phone_number在我的phone_numbers

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#')
Run Code Online (Sandbox Code Playgroud)

我上面的rgxpattern有问题吗?我试过使用:

^[0-9]{3}-[0-9]{3}-[0-9]{4}$
Run Code Online (Sandbox Code Playgroud)

^\d{3}-\d{3}-\d{4}$
Run Code Online (Sandbox Code Playgroud)

示例电话号码:

 111-222-3333  
 777-444-4444  
Run Code Online (Sandbox Code Playgroud)

结果摘录:

BAD#BAD#BAD#BAD#
Run Code Online (Sandbox Code Playgroud)

有什么想法或帮助吗?

Ben*_*Ben 6

如果您的“示例电话号码”是正确的,则每个电话号码前后都有空白,这应该可以解决此问题:

^\s*\d{3}-\d{3}-\d{4}\s*$
Run Code Online (Sandbox Code Playgroud)