この記事はアピリッツの技術ブログ「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メソッドだけでは、文字列が「全角文字と半角文字の混合」なのか「全角文字だけなのか」がわかりません。
では、住所のふりがなの入力チェックなんかに、ぜひ利用してみてください。