Laravel validation 任意の記号をはじきたい

 

バリデーションで記号をはじきたいとき

 

本当はホワイトリストを指定できればいいのですが、

平仮名、片仮名、漢字を許可したいので、

 

はじきたい記号と空白を指定しました


$validationRules
= [
'pram' => ['required', 'regex:/^[^!"#$%&\'()\.,\/:;<=>?@\[\\\]^_`{|}~\s]+$/'],
];

うろ覚えでちゃんと動作確認してません・・・ 

 

記号の指定はこちらを参考にしました ↓ ↓ ↓

 

参考ページの記号否定をコピペしてregexに入れたものです

これはどうも動かないようです


$validationRules
= [
'pram' => ["regex:/[^!\"#$%&'()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}~]+/"],
];

 

行頭^と行末$(^[・・・・・]+$ )をつけないと、

許可する文字が含まれる時にすり抜けてしまいます

 

任意入力だけど、記号をはじきたいという場合は、

+から*に変えればいいかと思いきや普通に引っかかってしまいました

$validationRules = [
'pram' => ["regex:/[^!\"#$%&'()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}~]*/"],
];

 

とりあえずnullableにしておきました

これで引っかからずにすみます

$validationRules = [
'pram' => ['nullable', "regex:/[^!\"#$%&'()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}~]*/"],
];

 

ちゃんと動作確認したら、たぶん編集すると思います

 

ではでは