- PR -

正規表現について

1
投稿者投稿内容
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2004-10-25 15:54
あるテキストに漢字/ひらがな/カタカナ/数字/英字/"()"/"."/"-" の入力を許可するテキストを作成しています。検証コントロール:RegularExpressionValidationを使用し、正規表現
^[\.\-]+$
を入れ、".","-"入力は可になりました。しかし、ひらがなや漢字などはどのようにして指定すればよいのでしょうか?何か情報をお持ちであれば、教えて頂きたいと思っています。程度の低い質問ですみませんが、どなたかよろしくお願い致します。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2004-10-25 16:05
お遊びで造った Perl で正規表現で ASCII, EUC漢字, EUCひらがな, EUCカタカナ、
特殊文字, etc,. を判別するやつがありますが、参考になれば。

コード:
#!/usr/bin/perl

while($line = <STDIN>){
    if($line =~ /^([\xb0-\xf4][\xa0-\xff]+)+([\xa1][\xa0]*)*([\xb0-\xf4][\xa0-\xff]+)+$/){
        print "漢字\n";
    }
    elsif($line =~ /^(\xa4[\xa0-\xff])+([\xa1][\xa0]*)*(\xa4[\xa0-\xff])+$/){
        print "ひらがな\n";
    }
    elsif($line =~ /^(\xa5[\xa0-\xff])+([\xa1][\xa0]*)*(\xa5[\xa0-\xff])+$/){
        print "カタカナ\n";
    }
    elsif($line =~ /^(\xa1[\xbc\xbd\xa1\xdd\xca\xcb])+$/){
        print "その他\n";
    }
    elsif($line =~ /^[\d]+$/){
        print "半角数字\n";
    }
    elsif($line =~ /^[a-zA-Z]+$/){
        print "半角英字\n";
    }
    elsif($line =~ /^[+,_\-\.#\[\]\\,\(\)\/;\"\$%&'`\?\!:@\{\}^H^X^O]+$/){
        print "半角特殊\n";
    }
    elsif($line =~ /^[\w\-\.#\[\]\\,\(\)\/;\"\$%&'`\?\!:@\{\}^H^X^O]+$/){
        print "半角英数特殊\n";
    }
    elsif($line =~ /^[ \r\n\t]+$/){
        print "タブ/リターン/空白/制御コード\n";
    }
    else {
        print "漢字かな\n";
    }
}



但し、Shift-JIS, Unicode, JIS 判別となると先頭 1 バイトと 残り1(2)バイトで
篩に掛ける範囲が違ってきますので・・・そこは自力で。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-10-25 21:04
引用:

SE卵さんの書き込み(2004-10-25 15:54)より:

あるテキストに漢字/ひらがな/カタカナ/数字/英字/"()"/"."/"-" の入力を許可するテキストを作成しています。


 OKなのがこれだけあると、逆にNGなものを検索する方が早いのではないでしょうか。例えば、"¥w"でマッチさせると、ひらがな、カタカナ、半角英数、_(アンダーバー)がマッチします。これに括弧などを追加したり、アンダーバーを弾いたり・・・?
 あと、例えばスラッシュはNGなようですが、全角のスラッシュはどうなるのでしょう?

参考:MSDN 2003年2月(VS.NET2003)用
ms-help://MS.MSDNQTR.2003FEB.1041/cpgenref/html/cpconCharacterClasses.htm
ms-help://MS.MSDNQTR.2003FEB.1041/cpref/html/frlrfSystemGlobalizationUnicodeCategoryClassTopic.htm

_________________
まーちん
会議室デビュー日: 2004/06/14
投稿数: 2
投稿日時: 2004-10-25 21:21
文字クラスを使います。

.Netの場合はUnicode Categoryが使えますので、IsKatakana、IsHiraganaのように記述します。
詳しくは次のURLが参考になるかと。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpgenref/html/cpconcharacterclasses.asp

ただし、仕様上の「漢字」とユニコード規格の「漢字」が完全に合致するとは限らない(その他のカテゴリも)ので、その点は要注意です。
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2004-10-26 09:42
お返事遅くなりまして申し訳ございません。みなさんのアドバイスを受け、いろいろ試した結果逆に入力出来ないものをチェックするようにしました。いろいろとありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)