新しく質問する

全角カタカナチェックについて

役に立った:2件
  • 質問者:volvo850love
  • 投稿日時:2007/02/23 01:45
  • 困り度:すぐに回答が欲しいです

現在Perlを使ってpostから受け取ったデータを全角のカタカナかどうかをチェックさせるスクリプトを書いていますがいろいろしらべていますがどうもやはりうまくいきません。
文字コードは今後のことを考えてutf-8です。
以下のようにこころみたのですがやはりうまくチェックできたいないようです。
$var =~ /[^(ア|ァ|イ|ィ|ウ|ゥ|エ|ェ|オ|ォ|ー|カ|ガ|キ|ギ|ク|グ|ケ|ゲ|コ|ゴ|サ|ザ|シ|ジ|ス|ズ|セ|ゼ|ソ|ゾ|タ|ダ|チ|ヂ|ツ|ヅ|ッ|テ|デ|ト|ド|ナ|ニ|ヌ|ネ|ノ|ハ|バ|パ|ヒ|ビ|ピ|フ|ブ|プ|ヘ|ベ|ペ|ホ|ボ|ポ|マ|ミ|ム|メ|モ|ヤ|ャ|ユ|ュ|ヨ|ョ|ラ|リ|ル|レ|ロ|ワ|ヲ|ン|-| | )]/
どうにか上のような正規表現をつかってチェックできないでしょうか?
ご教授よろしくお願いします。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:2件)

回答(2件)

  • 参考になった:0件
  • 回答者:moon_night
  • 回答日時:2007/02/23 10:34

Perlメモ
http://www.din.or.jp/~ohzaki/perl.htm#Character
が詳しいです。
ただし、utf-8は無いようですが。
EUCにエンコードしてからチェックすれば大丈夫でしょう

通報する

この回答への補足

何パターンか試したのですがうまくいきません。

1つめ
&jcode::convert(\$str, 'euc');
if($str =~ /(?:\xA5[\xA1-\xF6])/){$result =1;}
の場合は「あ」というひらがなでも$resultは空白
2つめ
if($str !~ /(?:\xA5[\xA1-\xF6])/){$result =1;}
の場合$strがなにをいれても$resultは1
3つめ
if($str =~ /[^(?:\xA5[\xA1-\xF6])]/){$result =1;}
これはCGIエラーでした・・・

この回答へのお礼

さっそくありがとうございます。
ということは
以下のような書きかたでいいのかな?
&jcode::convert(\$str, 'euc');
if($str =~ /[^(?:\xA5[\xA1-\xF6])]/){print"全角カタカナのみで入力してください。";}

試してみます。

  • 参考になった:0件

ア-ン

でどこまで拾ってくれるか確認してみたらどうだろう?

通報する

  
このQ&Aは役に立ちましたか?(役に立った:2件)

このページのトップへ