• ベストアンサー

正規表現を使った入力値のチェック

こんにちは、yukimura1024です。 perlでブラウザのフォームに入力された値をチェックしたいのですが、 入力された値が「全角文字のみか」と「全角カタカナのみか」 という2種類のチェックのしかたがわかりません。 「数値のみか」のチェックは正規表現を使ってできたのですが、 これと同じように正規表現を使って、この2つの全角チェックをする 方法はないでしょうか? 数値チェックは以下の方法でやっています↓ if ($str_txt_yuubin =~ /[^0-9]/) { print "「郵便番号」を半角数字で入力してください。<br>\n"; } ご存知の方がいましたら教えていただけると助かります。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.2

sjisならこんな感じでどですか /^(?:[\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc])+$/ #全角文字のみ /^(?:\x83[\x40-\x96])+$/ # 全角カタカナのみ

yukimura1024
質問者

お礼

できました!文字コードが問題だったのですね。 回答どうもありがとうございました(^^

その他の回答 (1)

回答No.1

日本語が使えるperlなら以下のようにやれば良いと思います if ($str=~/^[ -熙]+$/) { # 範囲の最初には全角スペースが入っています print "全角文字のみですね" ; } if ($str=~/^[ァ-ヶ]+$/) { print "全角カタカナのみですね" ; } 日本語が使えない場合は、バイトで指定する必要があるので、もうちょっと厄介です。

yukimura1024
質問者

補足

z_liang_00さん、回答ありがとうございます! 早速以下よう書いて実行してみましたが、うまく動作しませんでしたTT z_liang_00さんの言っていたように日本語が使えないperlなのか、それとも他に何か問題があるのでしょうか。。。 perlのバージョンはActivePerl-5.8.6.811でソースの文字コードはSJISでやっているのですが、ひょっとしてバージョンが古いとか、文字コードがダメとかあるでしょうか? #str="あいう"; if ($str=~/^[ -熙]+$/) { print "全角文字のみですね"; } #str="アイウ"; if ($str=~/^[ァ-ヶ]+$/) { print "全角カタカナのみですね"; }

関連するQ&A