Re: nginx регулярка

Валентин Бартенев ne at vbart.ru
Wed Jul 18 16:55:54 UTC 2012


On Wednesday 18 July 2012 20:17:56 X-Thief wrote:
[...]
> Если qwe=1234 я могу поймать так:
> if ($args ~* "qwe=[0-9]") {
> тут что-то;
> }
> то два параметра у меня уже не
> получается сделать.

Это не правильно. Правильно:

    if ($arg_qwe ~ "^\d+$") {
        ...
    }


> Вот что я пытаюсь:
> 
> if ($args ~* "test=test2&qwe=[0-9]") {
> тут что-то;
> }
> 
> То "тут что-то;" не работает
> 
> Как правильно составить выражение с
> двумя гет параметрами?

    if ($arg_qwe ~ "^\d+$") {
        set $test 1;
    }

    if ($arg_test = test2) {
       set $test "1$test";
    }

    if ($test = 11) {
        ...
    }

Но если непременно хочется сделать одной регуляркой, то:

    if ($args ~* "(?=.*(?:^|&)qwe=\d+(?:$|&))(?=.*(?:^|&)test=test2(?:$|&))") {
         ...
    }

--
Валентин


Подробная информация о списке рассылки nginx-ru