Laravel无法识别包含特殊字符的正则表达式|或 ]



我试图在控制器中使用Laravel/Lumen验证来检查句子是否包含特殊字符|],如下所示:

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

如果我在控制器上使用此验证,我会得到以下错误

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

没有|],验证工作正常。

通常规则数组可以解决这个问题。

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

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

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

如果管道应该是OR,那么您将需要使用一个数组,如Laravel preg_match((中所述:无结束分隔符'/';找到

进一步阅读:

  • 正则表达式引用:特殊和不可打印字符

最新更新