Laravel validation 任意の記号をはじきたい
バリデーションで記号をはじきたいとき
本当はホワイトリストを指定できればいいのですが、
平仮名、片仮名、漢字を許可したいので、
はじきたい記号と空白を指定しました
$validationRules = [
'pram' => ['required', 'regex:/^[^!"#$%&\'()\.,\/:;<=>?@\[\\\]^_`{|}~\s]+$/'],
];
うろ覚えでちゃんと動作確認してません・・・
記号の指定はこちらを参考にしました ↓ ↓ ↓
参考ページの記号否定をコピペしてregexに入れたものです
これはどうも動かないようです
$validationRules = [
'pram' => ["regex:/[^!\"#$%&'()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}~]+/"],
];
行頭^と行末$(^[・・・・・]+$ )をつけないと、
許可する文字が含まれる時にすり抜けてしまいます
任意入力だけど、記号をはじきたいという場合は、
+から*に変えればいいかと思いきや普通に引っかかってしまいました
$validationRules = [
'pram' => ["regex:/[^!\"#$%&'()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}~]*/"],
];
とりあえずnullableにしておきました
これで引っかからずにすみます
$validationRules = [
'pram' => ['nullable', "regex:/[^!\"#$%&'()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}~]*/"],
];
ちゃんと動作確認したら、たぶん編集すると思います
ではでは