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

问题描述:

我试图转义方括号内的括号。转义正方括号内的正则表达式

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

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

这给我的警告:

警告:的preg_match():编译 失败:范围乱序在 字符类在 /var/www/test.php偏移15在线6
失败

外方括号中的转义工作正常。

任何想法?

你需要躲避连字符,以及...书面,它将从下划线匹配(ASCII 95)左paren(ASCII 40)。

逃避连字符,或者通过移动到前面或焦炭类列表回到