gpt4 book ai didi

python - 国际电话号码验证

转载 作者:行者123 更新时间:2023-11-28 22:03:46 26 4
gpt4 key购买 nike

我需要在 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。在我看来,您有三个选择:

  1. 煞费苦心地为每个国家/地区代码创建了一个数字格式数据库。然后定期检查每个国家/地区的更新。 (编辑:它看起来像 Google already does this ,所以如果您相信他们和 Python 搬运工保持 libphonenumber 正确和最新,并且不介意每次有变化时升级这个库,那可能对您有用。 )
  2. 消除所提供电话号码中的所有分隔符,并将其格式化为无任何空格:+12128675309
  3. 在用户提供数字时格式化数字,而不是自己错误地重新格式化。

关于python - 国际电话号码验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8406765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com