2012-03-22 6 views
0

私は、フォームフィールドを持っている:正規表現

web_address = forms.RegexField(regex=r'^DO SOMETHING$', error_messages = {'invalid': _("Not a valid web address.")}) 

私は上記のアドレスの正規表現を記述することができません。私の要件は、http://maps.google.com/maps/place?cid=1234の形式でURLを検証することです。 id 1234は変種ですが、先行は一定です。

助けてください!

答えて

4

  1. ?.は正規表現で特殊文字で、数字のチェック
  2. をエスケープする必要が知っている、いずれかの定義済みのクラス\dを使用するか、または独自の[0-9]を定義し、少なくとも言うことはちょうど2つの事があります1 \d+

ので、あなたの正規表現は

のようになるはずです
^http://maps\.google\.com/maps/place\?cid=\d+$ 

正規表現の詳細については、www.regular-expressions.infoを参照してください。あなたをテストする

あなたはgskinner.com/RegExr/のようなオンラインテスターを使用することができます正規表現します。あなたはhere

2

これは動作するはずですあなたの正規表現を見ることができます:

web_address = forms.RegexField(regex=r'^http\\:\\/\\/maps\\.google\\.com\\/maps\\/place\\?cid\\=\d+'$', error_messages = {'invalid': _("Not a valid web address.")}) 

IE:

>>> import re 
>>> re.match('^http\\:\\/\\/maps\\.google\\.com\\/maps\\/place\\?cid\\=\d+',  'http://maps.google.com/maps/place?cid=1234', re.IGNORECASE) 
<_sre.SRE_Match object at 0x1251fa8>