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

Ale*_*mia 8 php regex laravel laravel-5 laravel-validation

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

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

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

Wik*_*żew 11

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

我建议:

'regex:/^[\w-]*$/'
Run Code Online (Sandbox Code Playgroud)

细节:

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

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


djt*_*djt 8

使用内置的字母数字验证可能是最简单的:

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

$validator = Validator::make($request->all(), [
    'filename' => 'alpha_num',
]);
Run Code Online (Sandbox Code Playgroud)


Akr*_*hid 7

使用laravel规则,

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

Laravel验证规则,用于字母数字,破折号和非核心