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


Escaping regular expressions inside square brackets

我试图转义方括号内的圆括号。

$pattern = "/^[a-zA-Z0-9 _-'(]{1,25}$/";
$str = "TEST (ok)";
if (preg_match($pattern, $str)) {
    echo "<br />OK";
} else {
    echo "<br />FAIL";
}

这给了我一个警告:

警告:preg_match(): Compilation失败:范围无序偏移量为15英寸的字符类/var/www/test.php第6行
失败

方括号外的转义正常。

任何想法?

还需要转义连字符…如前所述,它将匹配从下划线(ASCII 95)到左括号(ASCII 40)。

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