プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (2件)

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エラーでした・・・

補足日時:2007/02/23 13:57
    • good
    • 0
この回答へのお礼

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

試してみます。

お礼日時:2007/02/23 11:11

ア-ン



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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!