本記事では、Laravelのバリデーション機能を使って、以下のような柔軟かつ実用的な入力チェックを行う方法を解説します。
対応するバリデーション内容
0~10の整数
のみに制限する方法郵便番号
のバリデーション:- ハイフンあり(例:530-0001)
- ハイフンなし(例:5300001)
- 空欄許可(任意入力)
1. 0〜10の整数バリデーション
コントローラー例:
$request->validate([
'type' => 'required|integer|between:0,10'
]);
ポイント
integer
:整数限定between:0,10
:0〜10の範囲内required
:未入力NG(任意入力にしたい場合はnullable
に変更)
2. 郵便番号バリデーション(柔軟対応)
ルール例:
$request->validate([
'zipcode' => ['nullable', 'regex:/^\d{3}-?\d{4}$/']
]);
許容される形式:
5300001
530-0001
- (空欄)
解説
nullable
:入力が空でも許容regex:/^\d{3}-?\d{4}$/
:3桁 + (ハイフンあり・なし) + 4桁 の形式を許可
3. Bladeテンプレートでの入力欄例
<!-- 郵便番号 -->
<input type="text" name="zipcode" value="{{ old('zipcode') }}" class="form-input">
@error('zipcode')
<p class="text-red-500 text-sm">{{ $message }}</p>
@enderror
<!-- 0~10数値 -->
<input type="number" name="type" min="0" max="10" value="{{ old('type') }}" class="form-input">
@error('type')
<p class="text-red-500 text-sm">{{ $message }}</p>
@enderror
まとめ
Laravelのバリデーション機能を使えば、複雑な正規表現や範囲制限もシンプルに実装できます。
特にユーザー入力に関しては「柔軟な許容+明確な制限」を併用することで、UXを損なわずに信頼性を高めることが可能です。
コメント