代码之家  ›  专栏  ›  技术社区  ›  Alex Lomia

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

  •  10
  • Alex Lomia  · 技术社区  · 8 年前

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

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

    仅限字母数字字符、破折号和下划线 在他们之中。然而,我的正则表达式不起作用,它甚至在单个字母上都失败了。我做错了什么?

    5 回复  |  直到 8 年前
        1
  •  19
  •   Wiktor Stribiżew    8 年前

    您需要确保模式与整个输入字符串匹配。此外,字母数字和下划线符号可以与 \w

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

    :

    • ^
    • [\w-]* -来自 [a-zA-Z0-9_] 范围或 - s
    • $ -字符串结尾。

    'alpha_dash' :您可以进一步自定义此模式。

        2
  •  9
  •   Mohamed Akram    8 年前

    使用拉拉维夫法则,

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

    Laravel validation rule for alpha numeric,dashes and undescore

        3
  •  7
  •   djt    8 年前

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

    https://laravel.com/docs/5.2/validation#rule-alpha-num
    
    $validator = Validator::make($request->all(), [
        'filename' => 'alpha_num',
    ]);
    
        4
  •  2
  •   Daniel Waghorn    8 年前

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

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

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

        5
  •  0
  •   pankaj    2 年前

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

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