5

英国の携帯電話番号のみを検証する正規表現が必要です。

英国の携帯電話番号は10-14数字の間で、 で始まるか、と で始まる07かを省略できます。0447

重要なのは、ユーザーが追加した場合、+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)

これは私のルールではまだ検証されていません。誰かが助けることができますか?

4

2 に答える 2

14

次の正規表現は、私が正しく理解していれば、要件に適合するようです。

値のホワイトリストを作成するだけで、プラスはその中にないため、+ 記号を許可しないのは非常に簡単です。

^(07[\d]{8,12}|447[\d]{7,11})$

この回答のコメントで述べたように、ここでは角括弧は必要ありません。この正規表現を自分で読みやすくするために、それらを含めました。ただし、次の場合も同様に機能します。

^(07\d{8,12}|447\d{7,11})$

于 2013-05-06T18:56:09.447 に答える