首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python验证手机号码

Python验证手机号码
EN

Stack Overflow用户
提问于 2013-04-22 03:04:47
回答 6查看 39.4K关注 0票数 6

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

当传递的值看起来不像手机号码时,我需要它引发一个验证错误。手机号码可以是10到14位数字,以0或7开头,也可以加上44或+44。

代码语言:javascript
复制
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)
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-04-22 03:11:09

下面的正则表达式与您的描述匹配

代码语言:javascript
复制
r'^(?:\+?44)?[07]\d{9,13}$'
票数 9
EN

Stack Overflow用户

发布于 2014-02-07 00:22:13

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

代码语言:javascript
复制
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)))

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

票数 20
EN

Stack Overflow用户

发布于 2013-04-22 03:09:31

我会尝试这样的方法:

代码语言:javascript
复制
re.compile(r'^\+?(44)?(0|7)\d{9,13}$')

不过,您可能希望首先删除所有空格、连字符或圆括号。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16135069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档