忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


2024/04/19 23:46 |
正規表現で半角文字をマッチさせる方法
全角文字のみ入力可能にしたい、という要求があったので調べてみました。
はじめはゴリ押しで半角文字を全部書くのを思いついたんですが、どうもスマートじゃないと思ったわけです。


正規表現で、英文の半角空白からチルダ (~)まで( !"#$%&'()*+,-./0〜9:;<=>?@A〜Z[\]^_`a〜z{|}~ )
をマッチさせるのは、以下のように文字コードを指定して書きます。


[正規表現と使用例]

$result = ereg("[\x20-\x7E]", $string]);


うーん、こりゃ便利!
他の案件でも使おっと(笑)



--- 2007/0704 追記 -----
コメントでもご指摘のあったように、2バイト目に「¥(半角)」なんかを含む文字は結構あるようです。
で、新しく考えたのは以下の通り↓。


[ PHP ]
if (ereg("(^|[^\x81-\x9F\xE0-\xFC])[\x21-\x7f]", $_GET["name"])){
  echo '半角文字を含む!';
} else {
  echo '半角文字を含まない!';
}


記号がマッチした場合、その直前の文字が「文字列の先頭」か「漢字コードの1バイト目で使われるコードではない」場合、記号を含むと判断しています。
とは書いてみたものの、まだ不安だなぁ・・・文字コード関連については時間を見つけて勉強しないと。


[参考文献]
www.kent-web.com/pubc/jcode/
www.psl.ne.jp/perl/pdojo00c.html
www.psl.ne.jp/perl/pdojo00b.html
ash.jp/code/unitbl21.htm


PR

2008/05/08 03:18 | Comments(1) | TrackBack() | 正規表現

トラックバック

トラックバックURL:

コメント

\x5Cを第二バイトに使っている文字がけっこうあるよ。
Perlでは区別してくれなかったから、PHPでも同様だと思う。
のでご注意アレ。
こんど一覧送る。
posted by Aat 2008/05/24 23:03 [ コメントを修正する ]

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<MySQLで左に文字を詰める(001とか) | HOME | GoogleMapの利用、IEでエラー>>
忍者ブログ[PR]