匹配美国电话号码的正则表达式
我有一些(算是)能用的代码,用来匹配美国的电话号码,格式是:###-###-####
问题是,我的代码在处理每个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*$