我试图在控制器中使用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((中所述:无结束分隔符'/';找到
进一步阅读:
- 正则表达式引用:特殊和不可打印字符