转义方括号内的正则表达式

时间:2011-04-12 19:38:49

标签: php regex escaping

我正试图逃避方括号内的括号。

$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的字符类   第6行的/var/www/test.php
  FAIL

在方括号外,逃逸工作正常。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

你也需要转义连字符......如上所述,它将从下划线(ASCII 95)到左边的paren(ASCII 40)匹配。

答案 1 :(得分:0)

转义连字符或将其移到char类列表的前面或后面