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.
以下正则表达式符合您的描述
r'^(?:\+?44)?[07]\d{9,13}$'
Run Code Online (Sandbox Code Playgroud)