正则表达式为Windows文件名laravel 4.2

时间:2016-07-14 03:27:23

标签: php regex laravel laravel-4

我有这个控制器来更新文件的文件名。起初,我在编辑文件名时不知道某些验证。所以重命名时我遇到了错误。所以我现在要做的是在我的验证中实现一个正则表达式。

以下是它的样子:

$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;结果

关于我做错的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以在此处使用数组,因为您的模式包含管道符号。即使它不是一个交替运算符并且在一个字符类中,管道requires using an array

使用

\

至于正则表达式本身,请注意您不必转义-以外的特殊字符(以及^(不在char类的开头/结尾)和{ {1}}(如果不是在字符类的开头),](如果不是在字符类的开头))和/(因为它是一个正则表达式分隔符)正则表达式。