【发布时间】:2016-11-16 19:49:56
【问题描述】:
我有这个控制器来更新文件的文件名。起初,我不知道编辑文件名时的某些验证。所以重命名时出现错误。所以现在我要做的是在我的验证中实现一个正则表达式。
如下所示:
$rules = array(
'eFile' => 'required|min:2|max:200| regex: /^(?!\.)(?!com[0-9]$)(?!con$)(?!lpt[0-9]$)(?!nul$)(?!prn$)[^\|\*\?\\:<>/$"]*[^\.\|\*\?\\:<>/$"]+$/ | unique:nsa_fileuploads,filename,' . $id . ',fileid'
);
正则表达式模式:
regex: /^(?!\.)(?!com[0-9]$)(?!con$)(?!lpt[0-9]$)(?!nul$)(?!prn$)[^\|\*\?\\:<>/$"]*[^\.\|\*\?\\:<>/$"]+$/
但是一旦执行,我得到以下错误:
preg_match(): 没有找到结束分隔符'/'
关于我做错了什么有什么想法吗?
【问题讨论】:
-
可能是您的
/未转义。试试这个:/^(?!\.)(?!com[0-9]$)(?!con$)(?!lpt[0-9]$)(?!nul$)(?!prn$)[^\|\*\?\\:<>\/$"]*[^\.\|\*\?\\:<>\/$"]+$/ -
你好@Ohgodwhy!我试过了,但我仍然收到
preg_match(): No ending delimiter '/' found错误 -
嗨@WiktorStribiżew 我也找到了
preg_match(): No ending delimiter ''我还尝试了您提供的regex101链接中的其他字符@ , %,但同样的错误:( -
尝试使用数组:
'eFile' => ['required', 'min:2', 'max:200', 'regex:/^(?!\.)(?!com[0-9]$)(?!con$)(?!lpt[0-9]$)(?!nul$)(?!prn$)[^|*?\\:<>\/$"]*[^.|*?\\:<>\/$"]+$/', 'unique:nsa_fileuploads,filename,' . $id . ',fileid' ]
标签: php regex laravel laravel-4