Экранирование регулярных выражений в квадратных скобках - PullRequest
0 голосов
/ 12 апреля 2011

Я пытаюсь избежать скобок в квадратных скобках.

$pattern = "/^[a-zA-Z0-9 _-\(]{1,25}$/";
$str = "TEST (ok)";

if (preg_match($pattern, $str)) {
    echo "<br />OK";
} else {
    echo "<br />FAIL";
}

Это дает мне предупреждение:

Предупреждение: preg_match (): компиляция не удалось: диапазон вышел из строя в класс символов по смещению 15 в /var/www/test.php в строке 6
СБОЙ

За пределами квадратных скобок экранирование работает нормально.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 12 апреля 2011

Вам также нужно экранировать дефис ... как написано, он будет совпадать с подчеркиванием (ASCII 95) через левую часть (ASCII 40).

0 голосов
/ 12 апреля 2011

экранировать дефис или переместить его в начало или конец списка классов char

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...