【问题标题】:Escaping regular expressions inside square brackets在方括号内转义正则表达式
【发布时间】:2023-03-09 21:09:01
【问题描述】:

我正在尝试转义方括号内的括号。

$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 行
失败

在方括号之外,转义可以正常工作。

有什么想法吗?

【问题讨论】:

    标签: php regex escaping


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多