Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
5
Help us understand the problem. What is going on with this article?
@yu_ku

Laravel バリデーションのメモ

More than 1 year has passed since last update.
        Validator::extend('kana', function ($attribute, $value, $parameters) {
            if (mb_strlen($value) > 100) {
                return false;
            }

            if (preg_match('/[^ぁ-んー]/u', $value) !== 0) {
                return false;
            }

            return true;
        });
        Validator::extend('url', function ($attribute, $value, $parameters) {
            return(preg_match("/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/", $value));
        });
        Validator::extend('alpha_number', function ($attribute, $value, $parameters) {
            return(preg_match("/^[\w-]*$/", $value));
        });
        Validator::extend('env_dep', function ($attribute, $value, $parameters) {
            $pass = false;
            foreach (preg_split('//u', $value, -1, PREG_SPLIT_NO_EMPTY) as $s) {
                $pass = (strlen($s) == strlen(mb_convert_encoding(mb_convert_encoding($s, 'SJIS', 'UTF-8'), 'UTF-8', 'SJIS'))) ? true : false;
            }
            return $pass;
        });
半角英数字
        Validator::extend('half_width_alpha_numeric', function ($attribute, $value, $parameters, $validator) {
            if (is_null($value))
                return true;
            return(preg_match("/^[a-zA-Z0-9]+$/u", $value));
        });
半角英数字、半角ハイフン
        Validator::extend('half_width_alpha_numeric_hyphen', function ($attribute, $value, $parameters, $validator) {
            if (is_null($value))
                return true;
            return(preg_match("/^[a-zA-Z0-9\-]+$/u", $value));
        });
全角(ひらがな、カタカナ、漢字)
        Validator::extend('kanji_katakana_hiragana', function ($attribute, $value, $parameters, $validator) {
            if (is_null($value))
                return true;
            return(preg_match("/^[ぁ-んァ-ヶ一-龥々]+$/u", $value));
        });
```php:全角ひらがな
        Validator::extend('hiragana', function ($attribute, $value, $parameters, $validator) {
            if (is_null($value))
                return true;
            return(preg_match("/^[ぁ-ん]+$/u", $value));
        });
全角(ひらがな、カタカナ、漢字、数字、英字、ハイフン全角、中黒、全角シングルクオート、@全角)
        Validator::extend('full_width', function ($attribute, $value, $parameters, $validator) {
            if (is_null($value))
                return true;
            return(preg_match("/^[ぁ-んァ-ヶ一-龥々0-9a-zA-Zー・’@]+$/u", $value));
        });
全角(ひらがな、カタカナ、漢字、数字、英字、全角ハイフン、中黒)、半角英数字、半角ハイフン
        Validator::extend('not_half_width_kana_symbol', function ($attribute, $value, $parameters, $validator) {
            if (is_null($value))
                return true;
            return(preg_match("/^[ぁ-んァ-ヶ一-龥々0-9a-zA-Zー・a-zA-Z0-9\-]+$/u", $value));
        });
半角英数記号
        Validator::extend('half_width_alpha_numeric_symbol', function ($attribute, $value, $parameters, $validator) {
            if (is_null($value))
                return true;
            return(preg_match("/^[!-~]+$/", $value));
        });
電話番号(任意入力)
        // 入力値にNULLまたは半角数字でない値が混在している場合、バリデーションエラー
        Validator::extend('optional_phone_no', function ($attribute, $value, $parameters, $validator) {
            // null check
            $null_count = 0;
            foreach ($value as $v) {
                if (is_null($v))
                    $null_count++;
            }
            // 全てNULLだった場合、バリデーションを行わない
            if ($null_count === 3)
                return true;

            // validate check
            $validate_ok_count = 0;
            foreach ($value as $v) {
                if (!is_null($v)) {
                    if (preg_match("/^[0-9]+$/u", $v)) {
                        $validate_ok_count++;
                    }
                }
            }
            // 全て半角数字だった場合、バリデーションOK
            if ($validate_ok_count === 3)
                return true;

            return false;
        });
配列の要素を文字列結合し、その文字列が指定された文字列長以下であること
        Validator::extend('max_implode_array', function ($attribute, $value, $parameters, $validator) {
            $max_len = (int) $parameters[0];
            if (mb_strlen(implode('', $value)) > $max_len) {
                return false;
            }
            return true;
        });
電話番号(必須)
        Validator::extend('phone_no', function ($attribute, $value, $parameters, $validator) {
            // null check
            $null_count = 0;
            foreach ($value as $v) {
                if (is_null($v)) {
                    $null_count++;
                }
            }
            // NULLがあった場合、バリデーションエラー
            if ($null_count > 0) {
                return false;
            }

            // 半角数字でバリデーション
            $validate_ok_count = 0;
            foreach ($value as $v) {
                if (!is_null($v)) {
                    if (preg_match("/^[0-9]+$/u", $v)) {
                        $validate_ok_count++;
                    }
                }
            }
            // 全て半角数字だった場合、バリデーションOK
            if ($validate_ok_count === 3) {
                return true;
            }
            return false;
        });


半角英数字記号・全角英数字かなカナ記号の一覧

 https://qiita.com/sta/items/848e7a8c4699a59c604f

5
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
joyworks
Webアプリケーション開発・制作やBtoCのWebサイト開発をはじめ、幅広い開発プロジェクトを手がけている当社。近年は帰社しやすい環境づくりのために渋谷にオフィスを移転したり、当社専属のIT講師を採用し、AI研修などに力を入れています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
5
Help us understand the problem. What is going on with this article?