半角文字か全角文字かを判断する正規表現です。 strが半角を含む場合、マッチします /[ -~。-゜]/ =~ str strが全角を含む場合、マッチします /[^ -~。-゜]/ =~ str どういう仕組みになっているのか? 基本的には両方共同じ正規表現です。 「strが半角を含むか?」と言うことをチェックしています。 まず、半角と名の付くものは半角英数字、半角記号、半角カタカナの3種類があります。 半角英数、半角記号は「ホワイトスペース」から始まり、「チルダ」で終わります。 半角カタカナは「句点」から始まり、「半濁点」で終わります。 なので、「 」から「~」と「。」から「゜」が半角の範囲になります。 Ruby的には「 [ 」と「 ] 」で挟むと文字クラスを表すので、[ -~。-゜]と書くと半角文字のどれか、となります。 逆に全角を表す場合は、文字クラス内で否定を表す「^」を頭につけれ
![半角か全角か調べる方法 - J備忘録](https://cdn-ak-scissors.b.st-hatena.com/image/square/df3a50c14b465108d37d0f484920317dd74971fb/height=288;version=1;width=512/http%3A%2F%2Fu.xgoo.jp%2Fimg%2Fsns%2Fblog.png)