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

新手上路,请多包涵

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

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

我的意图是允许文件名中 只包含字母数字字符、破折号和下划线。但是,我的正则表达式不起作用,即使在单个字母上它也会失败。我究竟做错了什么?

原文由 Alex Lomia 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

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

我建议:

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

详情

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

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

原文由 Wiktor Stribiżew 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏