0

Регулярные выражения, php и баксы…

Внезапно обнаружил так(ой|ую) (баг|фичу). Если в php, в регулярном выражении нужно (для сравнения/замены/…), чтобы в самом выражении присутствовал символ $ (естественно, экранированный), то его в обязательном порядке нужно помещать в квадратные скобки, иначе соответствующий выражению входной текст не будет соответствовать ему.

ADD: проверено для PHP Version 5.3.1 под венду, позже проверю под 5.3.6 под Линукс, может пофиксили уже.

Пример такой:

$var = "$3";
echo '<br>first regexp: ';
if (preg_match("/^\$[0-9]+$/",$var))
    echo 'passed';
else
    echo 'not passed';
echo '<br>second regexp: ';
if (preg_match("/^[\$]{1}[0-9]+$/",$var))
    echo 'passed';
else
    echo ' not passed';

Получим:

first regexp: not passed
second regexp: passed