その他
    ホーム 技術発信 DoRuby 【Ruby】半角/全角バリデータ【Rails】

    【Ruby】半角/全角バリデータ【Rails】

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    入力項目には必ずといってもいいほど必要な「バリデーション」。
    今回は、「その文字列が半角 or 全角文字のみであるか」というバリデーションをRubyで紹介します。今回の条件は以下の通りです。

    半角文字:半角カタカナ、半角英数字、一部の記号(濁点、半濁点など)
    全角文字:半角文字でないもの
    メールアドレス、URLは除外
    

    では、半角/全角のバリデーションのソース公開☆

    KCODE = 'u'
    
      def self.hankaku?(str)
        return nil if str.nil?
        # 半角のみOKなので、全角が混ざっているとfalseが返る
        unless str.to_s =~ /^[ -~。-゚]*$/
          return false
        end
      return true
      end
    
      def self.zenkaku?(str)
        return nil if str.nil?
        # 全角のみOKなので、半角が混ざっているとfalseが返る
        unless str.to_s =~/^[^ -~。-゚]*$/
          return false
        end
        return true
      end
    

    このままコピペすれば使えるはずです。
    内容は非常に簡単で、正規表現で半角文字列にマッチするか否かを調べているだけです。

    今回半角用と全角用を用意したのは、「その文字列が半角 or 全角文字だけで構成されているかどうか」を調べたかったからです。
    hankakuメソッドだけでは、文字列が「全角文字と半角文字の混合」なのか「全角文字だけなのか」がわかりません。

    では、住所のふりがなの入力チェックなんかに、ぜひ利用してみてください。