Регулярное выражение для поля формы Django - PullRequest
0 голосов
/ 22 марта 2012

У меня есть поле формы:

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 является вариантом, но предыдущий будет постоянным.

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

Ответы [ 2 ]

4 голосов
/ 22 марта 2012

Есть только две вещи, которые нужно знать

  1. ? и . являются специальными символами в регулярном выражении и требуют экранирования
  2. проверяя цифры, либо используйте предопределенный класс \d, либо определите свой собственный [0-9] и скажите хотя бы один \d+

так что ваше регулярное выражение должно выглядеть примерно так:

^http://maps\.google\.com/maps/place\?cid=\d+$

Если вы хотите узнать больше о регулярных выражениях, www.regular-expressions.info - хорошее место для начала.

Для проверки ваших регулярных выражений вы можете использовать онлайн-тестеры, такие как gskinner.com / RegExr / . Вы можете увидеть свое регулярное выражение здесь

2 голосов
/ 22 марта 2012

Это должно работать:

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>
...