以下はプロジェクト名に関する私のルールです:
$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パターンを使用する場合、パイプ区切り文字を使用する代わりに、配列でルールを指定する必要がある場合があります。特に正規表現にパイプ文字が含まれている場合は注意が必要です。