python - 英国手机号码的正则表达式 - Python

标签 python regex django

我需要一个只验证英国手机号码的正则​​表达式。

英国手机号码可以在 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/

相关文章:

具有双循环的 Python lambda

Python Pandas : Resampling Multivariate Time Series with a Groupby

匹配重音符号的正则表达式

django - 无法通过 AWS EC2 实例上的 Gunicorn 访问 Django 默认应用程序

python - 在 Pandas 中使用 SUMIF 函数

python - 如何将 catboosts 原始预测分数 (RawFormulaVal) 转换为概率?

regex - 如何在 Notepad++ 中使用正则表达式替换字符串,同时保留其一部分

java - 除特定情况外如何匹配单个字符

django - 在 Celery 中检索任务的结果

python - Django SearchVector 不适用于包含空格的搜索查询