我需要在Python中对所有美国和国际电话号码进行非常基本的电话号码验证和格式化.这是我到目前为止所拥有的:
import re
def validate(number):
number = re.compile(r'[^0-9]').sub('', number)
if len(number) == 10:
# ten-digit number, great
return number
elif len(number) == 7:
# 7-digit number, should include area code
raise ValidationError("INCLUDE YOUR AREA CODE OR ELSE.")
else:
# I have no clue what to do here
def format(number):
if len(number) == 10:
# basically return XXX-XXX-XXXX
return re.compile(r'^(\d{3})(\d{3})(\d{4})$').sub('$1-$2-$3', number)
else:
# basically return +XXX-XXX-XXX-XXXX
return re.compile(r'^(\d+)(\d{3})(\d{3})(\d{4})$').sub('+$1-$2-$3-$4', number)
Run Code Online (Sandbox Code Playgroud)
我的主要问题是我不知道国际电话号码是如何工作的.我假设它们只是10位数字,\d+前面有国家代码.这是真的?