我有这个控制器来更新文件的文件名。起初,我在编辑文件名时不知道某些验证。所以重命名时我遇到了错误。所以我现在要做的是在我的验证中实现一个正则表达式。
以下是它的样子:
$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():没有结尾分隔符&#39; /&#39;结果
关于我做错的任何想法?
答案 0 :(得分:1)
您可以在此处使用数组,因为您的模式包含管道符号。即使它不是一个交替运算符并且在一个字符类中,管道requires using an array。
使用
\
至于正则表达式本身,请注意您不必转义-
以外的特殊字符(以及^
(不在char类的开头/结尾)和{ {1}}(如果不是在字符类的开头),]
(如果不是在字符类的开头))和/
(因为它是一个正则表达式分隔符)正则表达式。