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

问题描述

| 我正在尝试在方括号内转义一个括号。
$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 in   第6行的/var/www/test.PHP   失败 在方括号之外,转义效果很好。 有任何想法吗?     

解决方法

您还需要转义连字符...如所写,它将与下划线(ASCII 95)到左括号(ASCII 40)相匹配。     ,转义连字符或将其移到char类列表的前面或后面