python - 如何使用 Python 验证手机号码?

标签 python regex django

我正在尝试验证手机号码,以下是我目前所做的,但它似乎不起作用。

当传递的值看起来不像手机号码时,我需要它来引发验证错误。手机号码的长度可以是 10 到 14 位,以 0 或 7 开头,并且可以添加 44 或 +44。

def validate_mobile(value):
    """ Raise a ValidationError if the value looks like a mobile telephone number.
    """
    rule = re.compile(r'/^[0-9]{10,14}$/')

    if not rule.search(value):
        msg = u"Invalid mobile number."
        raise ValidationError(msg)

最佳答案

我建议使用 phonenumbers包是 Google 的 libphonenumber 的 python 端口,现在包含移动运营商的数据集:

import phonenumbers
from phonenumbers import carrier
from phonenumbers.phonenumberutil import number_type

number = "+49 176 1234 5678"
carrier._is_mobile(number_type(phonenumbers.parse(number)))

如果号码是手机号码,则返回 True,否则返回 False。请注意,该号码必须是有效的国际号码,否则将抛出异常。您也可以使用 phonenumbers在给定区域提示的情况下解析电话号码。

关于python - 如何使用 Python 验证手机号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16135069/

相关文章:

Python 子进程等待标准输出上的特定字符串

PHP 正则表达式或 |运算符(operator)

html - Dreamweaver中正则表达式注释掉css

regex - 在 Perl 中使用正则表达式模式生成语法?

python - 在 Django 管理站点中显示 ManyToMany 对象的字段名称而不是整个对象

带有 zc.buildout 的 Django 1.4 开发环境

python - Tensorflow 训练期间 GPU 使用率非常低

python - 主脚本停止时后台进程出现无效参数错误

python - 为什么 str.translate 在 Python 3 中不起作用?

python - Django 分页查询的下一步和之前链接