|
|
|
| Здравствуйте!
Как в .htaccess прописать отрицание не символа, а слова? | |
|
|
|
|
|
|
|
для: vadimka
(03.10.2011 в 13:37)
| | Обычно для этого используют опережающие и ретроспективные проверки (не уверен, правда что диалект регулярных выражений, реализованных в mod_rewrite их поддерживает), т.е. можно указать, что слова может не быть слева или справа от другого символа. | |
|
|
|
|
|
|
|
для: cheops
(03.10.2011 в 13:47)
| | Вот точно не долно быть слова cat
^([^cat][a-zA-Z-]+)/([a-zA-Z-]+)/?$
|
| |
|
|
|
|
|
|
|
для: vadimka
(03.10.2011 в 14:06)
| | Тогда опережающая проверка должна выглядеть следующим образом
^([a-zA-Z]{3}(?<!cat)[a-zA-Z-]*)/([a-zA-Z-]+)/?$
| Правда тут первые три символа вводятся явно... сколько вообще символов будет до / и после / ? | |
|
|
|
|
|
|
|
для: cheops
(03.10.2011 в 14:25)
| | неизвестно, данные динамические из базы
^([a-z]{3}(?<!cat)[a-zA-Z-]*)/([a-zA-Z-]+)/?$
|
не могли бы Вы объяснить ?<!
я спрашиваю потому что подумал - это ошибка, но без нее условие, когда cat/ присутствовал, не срабатывало.... | |
|
|
|
|
|
|
|
для: vadimka
(03.10.2011 в 15:08)
| | >не могли бы Вы объяснить ?<!
Это единая последовательность, которая используется в скобках, чтобы задать отношение "не может быть расположено слева", которое называют опережающей негативной проверкой. | |
|
|
|
|
|
|
|
для: cheops
(03.10.2011 в 15:51)
| | >в скобках
в круглых (и только) | |
|
|
|
|
|
|
|
для: cheops
(03.10.2011 в 15:51)
| | Всем спасибо! | |
|
|
|
|
|
|
|
для: cheops
(03.10.2011 в 14:25)
| | >
^([a-zA-Z]{3}(?<!cat)[a-zA-Z-]*)/([a-zA-Z-]+)/?$
|
а зачем так запутано?
помоему вот этого будет достаточно
^((?!cat)[a-zA-Z-]*)/([a-zA-Z-]+)/?$
|
и выглядит логичней.
и сюдя с документации mod_rewrite поддерживает движок pcre, отсюда и все плюшки ;) | |
|
|
|