我需要在 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)
我的主要问题是我不知道国际电话号码是如何工作的。我假设它们只是 10 位数字,前面有国家/地区代码的
\d+
。这是真的? 最佳答案
E.164 数字最多可以有 15 位数字,您不应期望超出 1-3 位数字的国家/地区代码它们将适合任何特定形式。当然,有很多国家不是 XXX-XXX-XXXX。在我看来,您有三个选择:
关于python - 国际电话号码验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8406765/