カテゴリ: validation
掲載バージョン: Laravel 12・PHP 8.4
名前空間 / FQCN / コマンド: Illuminate\Validation\Rules\DigitsBetween
関連: digits, digits_between, between, numeric
変更履歴: なし
要点(TL;DR)
- 数値の 桁数 が指定した範囲内かを検証する
- digits_between:min,max を指定する
- 数値としての大小ではなく、文字列長ではなく、桁数で判定される点に注意
概要
Digits Between は、入力値が 数値 であり、その 桁数 が指定した最小値から最大値の範囲に収まっているかを検証するバリデーションルール。電話番号や確認コード、ID など、桁数が重要な値の検証に向いている。
between とは異なり、数値の大小は見ない。あくまで「何桁か」をチェックする。
構文 / シグネチャ
'digits_between:min,max'
| 引数 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
| min | int | yes | なし | 最小桁数 |
| max | int | yes | なし | 最大桁数 |
戻り値: なし(バリデーションルール)
例外/副作用: なし
使用例
最小例
$request->validate([
'code' => ['required', 'digits_between:4,6'],
]);
4 桁以上 6 桁以下の数値のみを許可する。
実務例
use Illuminate\Http\Request;
public function store(Request $request)
{
$validated = $request->validate([
'verification_code' => [
'required',
'digits_between:6,8',
],
]);
// 認証コードの照合処理など
}
SMS やメールで送る確認コードの検証にそのまま使える。
よくある落とし穴・注意
- numeric や integer を併用する必要はない
digits_between 自体が数値であることを前提に検証する - leading zero も桁数としてカウントされる
例: “0012” は 4 桁として扱われる - between と混同しやすい
between は値の範囲、digits_between は桁数の範囲
代替・関連APIとの比較
- digits
固定桁数を求める場合はこちら。例: digits:6 - between
数値や文字列の長さの範囲を検証したい場合 - size
桁数を 1 つに固定したい場合の代替だが、digits の方が意図が明確
選定基準:
桁数が可変なら digits_between、固定なら digits。
テスト例(Pest)
it('accepts numbers with digits between 4 and 6', function () {
$validator = validator(
['code' => '12345'],
['code' => 'digits_between:4,6']
);
expect($validator->passes())->toBeTrue();
});
トラブルシュート(エラー別)
| 症状/エラー | 原因 | 対処 |
|---|---|---|
| 常にバリデーションエラーになる | 数値以外が送られている | 入力値を確認する |
| 桁数が合っているのに失敗 | 全角数字が含まれている | 半角数字に正規化する |
参考リンク
- Laravel 公式ドキュメント Validation Digits
https://laravel.com/docs/validation#rule-digits - Laravel 公式ドキュメント Validation Digits Between
https://laravel.com/docs/validation#rule-digits-between

