半角文字か全角文字かを判断する正規表現です。 strが半角を含む場合、マッチします /[ -~。-゜]/ =~ str strが全角を含む場合、マッチします /[^ -~。-゜]/ =~ str どういう仕組みになっているのか? 基本的には両方共同じ正規表現です。 「strが半角を含むか?」と言うことをチェックしています。 まず、半角と名の付くものは半角英数字、半角記号、半角カタカナの3種類があります。 半角英数、半角記号は「ホワイトスペース」から始まり、「チルダ」で終わります。 半角カタカナは「句点」から始まり、「半濁点」で終わります。 なので、「 」から「~」と「。」から「゜」が半角の範囲になります。 Ruby的には「 [ 」と「 ] 」で挟むと文字クラスを表すので、[ -~。-゜]と書くと半角文字のどれか、となります。 逆に全角を表す場合は、文字クラス内で否定を表す「^」を頭につけれ