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


Validate only alphanumeric characters in Laravel

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

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

我的意图是允许文件名中只有字母数字字符、短划线和下划线。然而,我的regex不起作用,它甚至在一个字母上都失败了。我做错了什么?

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

我建议:

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

详细信息

  • ^-字符串的开头
  • ['w-]*-[a-zA-Z0-9_]范围或- s中的零个或多个字字符
  • $—字符串结束

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

使用laravel规则,

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

字母数字、短划线和非核心的Laravel验证规则

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

https://laravel.com/docs/5.2/validation#rule-alpha-num
$validator = Validator::make($request->all(), [
    'filename' => 'alpha_num',
]);

您忘记量化正则表达式,它的格式也不太正确。

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

这将接受空文件名;如果要接受非空,请将*更改为+

我检查了上述解决方案,但在我的版本中不起作用。My Laravel诉5.5。

 'address' => "required|regex:/^[0-9A-Za-z.'s,'-]*$/",