2012-03-22 3 views
0

У меня есть поле формы:Regex для поля формы Джанго

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

Я не могу написать регулярное выражение для по указанному выше адресу. Мое требование - проверить URL-адрес в форме http://maps.google.com/maps/place?cid=1234. Идентификатор 1234 является вариантом, но предыдущий будет постоянным.

Пожалуйста, помогите !!!

ответ

4

Есть только две вещи, чтобы знать

  1. ? и . специальные символы в регулярных выражениях и нужно избежать
  2. проверки цифр, либо использовать предопределенный класс \d или определить собственный [0-9] и сказать, по крайней мере, один \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>