Laravel検証における正規regex

2732 ワード

Laravelの検証機能は非常に強力で、基本的によく見られる需要には対応する検証ルールがあり、いくつかの特殊な検証需要に対して、Laravelも正則的な検証を提供しています.
正則検証の前にも一度使ったことがありますが、今日再利用したところ、だめだと気づき、公式文書を見て、問題がどこにあるか分かりましたので、ここに記録します.
公式ドキュメント:
regex:pattern
検証フィールドは、指定された正規表現と一致する必要があります.
注意:regexモードを使用する場合は、パイプ区切り記号、特に正規表現でパイプ記号が使用されている場合は、ルールを配列に配置する必要があります.以前は正規検証を使用していましたが、パイプ文字|を使用して他のルールとは別に、今日再び正規検証を使用した場合、成功しませんでした.次のように使用します.
public function rules(){
    return [
        'username' => 'required|regex:/^[a-zA-Z0-9_-]{4,16}$/',
        'month' => 'required|regex:/^([1-9]|1[0-2])$/',
    ];
}

ドキュメントを見て、正規検証を使用する場合は、ルールを配列に配置し、次のように変更すると成功します.
public function rules(){
    return [
        'username' => [
            'required',
            'regex:/^[a-zA-Z0-9_-]{4,16}$/'
        ],
        'month' => [
            'required',
            'regex:/^([1-9]|1[0-2])$/'
        ],
    ];
}

または、
public function rules(){
    return [
        'username' => array(
            'required',
            'regex:/^[a-zA-Z0-9_-]{4,16}$/'
        ),
        'month' => array(
            'required',
            'regex:/^([1-9]|1[0-2])$/'
        ),
    ];
}

以前は成功していたが、正則ではパイプ文字|が使用されていなかったはずで、最初のusernameの検証ではパイプ文字が使用されておらず、配列に置かなくても検証可能であり、2番目のmonthの検証は配列に置かなければならない.ただし、規範化のために正規検証を使用する場合は、検証ルールを配列に配置します.
本明細書の元のリンク:Laravel検証の正規regex