Python验证手机号码

Gra*_*ntU 4 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)
Run Code Online (Sandbox Code Playgroud)

dav*_*idn 13

我建议使用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)))
Run Code Online (Sandbox Code Playgroud)

如果号码是手机号码,则返回True,否则返回False.请注意,该号码必须是有效的国际号码,否则将引发异常.在给定区域提示的情况下,您还可以使用phonenumbers来解析phonenumber.

  • 如果它返回 false,那还不够好吗?对我来说,这是迄今为止最好的。 (2认同)

Mik*_*keM 5

以下正则表达式符合您的描述

r'^(?:\+?44)?[07]\d{9,13}$'
Run Code Online (Sandbox Code Playgroud)

  • 明确地说,我并不是说这是一个很好的手机验证正则表达式,而只是说它符合问题中手机号码的定义。 (2认同)