我的 Laravel 5 应用程序中有以下代码:
public function store(Request $request){
$this->validate($request, ['filename' => 'regex:[a-zA-Z0-9_\-]']);
}
我的意图是允许文件名中 只包含字母数字字符、破折号和下划线。但是,我的正则表达式不起作用,即使在单个字母上它也会失败。我究竟做错了什么?
原文由 Alex Lomia 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要确保模式匹配整个输入字符串。此外,字母数字和下划线符号可以与
\w
匹配,因此正则表达式本身可以大大缩短。我建议:
详情:
^
- 字符串开始[\w-]*
- 来自[a-zA-Z0-9_]
范围或-
的零个或多个字字符$
字符串结尾。为什么它比
'alpha_dash'
更好:您可以进一步自定义此模式。