我需要一个只验证英国手机号码的正则表达式。
英国手机号码可以在 10-14
数字之间,并且可以以 07
开头,或者省略 0
并以 开头>447
.
重要的是,如果用户添加+44
,它应该被拒绝。
所以这些是有效的:
07111111111
447111111111
这些都是无效的:
+4471111111111
021929182711
00701029182
我目前拥有的:
rule = re.compile(r'^\+?(44)?(0|7)\d{9,13}$')
if not rule.search(value):
msg = u"Invalid mobile number."
raise ValidationError(msg)
这还没有根据我的规则进行验证;有人可以帮忙吗?
最佳答案
如果我理解正确,以下正则表达式似乎符合您的要求。
不允许使用 + 号非常容易,因为您只是在创建值的白名单,而加号不在其中。
^(07[\d]{8,12}|447[\d]{7,11})$
正如这个答案的评论中提到的,这里不需要方括号。我将它们包括在内是为了让我自己阅读这个正则表达式时更容易一些。但是,以下方法同样有效:
^(07\d{8,12}|447\d{7,11})$
关于python - 英国手机号码的正则表达式 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16405187/