- ベストアンサー
正規表現を使った入力値のチェック
こんにちは、yukimura1024です。 perlでブラウザのフォームに入力された値をチェックしたいのですが、 入力された値が「全角文字のみか」と「全角カタカナのみか」 という2種類のチェックのしかたがわかりません。 「数値のみか」のチェックは正規表現を使ってできたのですが、 これと同じように正規表現を使って、この2つの全角チェックをする 方法はないでしょうか? 数値チェックは以下の方法でやっています↓ if ($str_txt_yuubin =~ /[^0-9]/) { print "「郵便番号」を半角数字で入力してください。<br>\n"; } ご存知の方がいましたら教えていただけると助かります。 よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
sjisならこんな感じでどですか /^(?:[\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc])+$/ #全角文字のみ /^(?:\x83[\x40-\x96])+$/ # 全角カタカナのみ
その他の回答 (1)
- z_liang_00
- ベストアンサー率42% (45/107)
日本語が使えるperlなら以下のようにやれば良いと思います if ($str=~/^[ -熙]+$/) { # 範囲の最初には全角スペースが入っています print "全角文字のみですね" ; } if ($str=~/^[ァ-ヶ]+$/) { print "全角カタカナのみですね" ; } 日本語が使えない場合は、バイトで指定する必要があるので、もうちょっと厄介です。
補足
z_liang_00さん、回答ありがとうございます! 早速以下よう書いて実行してみましたが、うまく動作しませんでしたTT z_liang_00さんの言っていたように日本語が使えないperlなのか、それとも他に何か問題があるのでしょうか。。。 perlのバージョンはActivePerl-5.8.6.811でソースの文字コードはSJISでやっているのですが、ひょっとしてバージョンが古いとか、文字コードがダメとかあるでしょうか? #str="あいう"; if ($str=~/^[ -熙]+$/) { print "全角文字のみですね"; } #str="アイウ"; if ($str=~/^[ァ-ヶ]+$/) { print "全角カタカナのみですね"; }
お礼
できました!文字コードが問題だったのですね。 回答どうもありがとうございました(^^