Laravel无法识别包含特殊字符的RegEx |要么 ]

时间:2018-11-15 04:55:06

标签: php regex laravel laravel-5 lumen

我正在尝试使用如下控制器中的Laravel / Lumen验证来检查句子中是否包含特殊字符|]

'to_address' => 'required|max:200|regex:/^[^(|]~`!%^&*=};:?><’)]*$/',

如果我在控制器上使用此验证,则出现以下错误

{
    "error": "preg_match(): No ending delimiter '/' found"
}

在没有|]的情况下,验证工作正常。

2 个答案:

答案 0 :(得分:1)

通常使用规则数组可以解决此问题。

'to_address' => ['required', 'max:200', 'regex:/^[^(|]~`!%^&*=};:?><’)]*$/'],

答案 1 :(得分:0)

|]都是正则表达式中的特殊字符,因此您需要使用\字符对其进行转义:

'to_address' => 'required|max:200|regex:/^[^(\|\]~`!%^&*=};:?><’)]*$/',

如果管道应该是OR,那么您将需要使用数组,如Laravel preg_match(): No ending delimiter '/' found

中所述

进一步阅读: