我正在尝试验证一个手机号码,下面是我到目前为止所做的,但它似乎不起作用。
当传递的值看起来不像手机号码时,我需要它引发一个验证错误。手机号码可以是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)发布于 2013-04-22 03:11:09
下面的正则表达式与您的描述匹配
r'^(?:\+?44)?[07]\d{9,13}$'发布于 2014-02-07 00:22: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)))如果number是手机号码,则返回True,否则返回False。请注意,号码必须是有效的国际号码,否则将抛出异常。您还可以使用phonenumbers来解析给定区域提示的电话号码。
发布于 2013-04-22 03:09:31
我会尝试这样的方法:
re.compile(r'^\+?(44)?(0|7)\d{9,13}$')不过,您可能希望首先删除所有空格、连字符或圆括号。
https://stackoverflow.com/questions/16135069
复制相似问题