Laravelのバリデーションで「0~10の数値」「郵便番号の柔軟な入力」対応を実現する方法

Life

本記事では、Laravelのバリデーション機能を使って、以下のような柔軟かつ実用的な入力チェックを行う方法を解説します。

対応するバリデーション内容

  1. 0~10の整数のみに制限する方法
  2. 郵便番号のバリデーション:
    • ハイフンあり(例: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を損なわずに信頼性を高めることが可能です。

コメント

タイトルとURLをコピーしました