仅验证Laravel中的字母数字字符

时间:2016-07-28 20:50:45

标签: php regex laravel laravel-5 laravel-validation

我在Laravel 5应用程序中有以下代码:

public function store(Request $request){
    $this->validate($request, ['filename' => 'regex:[a-zA-Z0-9_\-]']);
}

我的目的是允许文件名中只包含字母数字字符,短划线和下划线。但是,我的正则表达式不起作用,即使只写一封信也没有。我做错了什么?

4 个答案:

答案 0 :(得分:10)

您需要确保模式匹配整个输入字符串。此外,字母数字和下划线符号可以与\w匹配,因此正则表达式本身可以大大缩短。

我建议:

'regex:/^[\w-]*$/'

<强>详情:

  • ^ - 字符串开头
  • [\w-]* - 来自[a-zA-Z0-9_]范围或- s
  • 的零个或多个字词字符
  • $ - 字符串结束。

为什么它比'alpha_dash' 更好:您可以进一步自定义此模式。

答案 1 :(得分:6)

使用laravel规则,

    public function store(Request $request){
    $this->validate($request, ['filename' => 'alpha_dash']);
}

Laravel validation rule for alpha numeric,dashes and undescore

答案 2 :(得分:3)

最容易使用内置的字母数字验证:

https://laravel.com/docs/5.2/validation#rule-alpha-num

$validator = Validator::make($request->all(), [
    'filename' => 'alpha_num',
]);

答案 3 :(得分:1)

你忘了量化正则表达式,它也没有很好地形成。

public function store(Request $request){
    $this->validate($request, ['filename' => 'regex:/^[a-zA-Z0-9_\-]*$/']);
}

这将接受空文件名;如果您想接受非空,只需将*更改为+