Laravel 5.4 - 正規表現による検証 [重複] 質問する

Laravel 5.4 - 正規表現による検証 [重複] 質問する

以下はプロジェクト名に関する私のルールです:

$this->validate(request(), [
    'projectName' => 'required|regex:/(^([a-zA-z]+)(\d+)?$)/u',
];

私は、それが必ず始まるようにルールを追加しようとしています文字またはa-z数字A-zで終わることもできますが、ほとんどの場合そうではありません。

プロジェクト名の有効な値:

myproject123
myproject
MyProject

プロジェクト名の値が無効です:

123myproject
!myproject
myproject 123
my project
my project123

正規表現をオンラインで試してみました:

ここに画像の説明を入力してください

https://regex101.com/r/FylFY1/2

動作するはずですが、 であっても検証に合格できますproject 123

アップデート: 実際に動作します。間違ったコントローラーでテストしただけです。申し訳ありませんが、それでも他の人の役に立つかもしれません。

ベストアンサー1

あなたのルールはよくできていますしかし知っておく必要があるのは、パイプラインで区切られた正規表現で検証ルールを指定することですリードできる望ましくない行動に。

検証ルールを定義する適切な方法は次のとおりです。

$this->validate(request(), [
    'projectName' => 
        array(
            'required',
            'regex:/(^([a-zA-Z]+)(\d+)?$)/u'
        )
]);

以下で読むことができます公式ドキュメント:

正規表現:パターン

検証対象のフィールドは、指定された正規表現と一致する必要があります。

注意: regex / not_regexパターンを使用する場合、パイプ区切り文字を使用する代わりに、配列でルールを指定する必要がある場合があります。特に正規表現にパイプ文字が含まれている場合は注意が必要です。

おすすめ記事