俺のメモ帖

とあるインフラ系SEのメモ帖。趣味や技術的なもとか書けたらいいなぁ。

【文字コード】SJISで半角カタカナチェックに正規表現を使った際の落とし穴【正規表現】

フォームに、半角カタカナ限定の入力項目をおいて、入力項目チェックを正規表現を使って行った際の落とし穴。

 

まあこれも知ってる人には何を今更って感じなんだろうけど。

 

ちゃんと表示されるかわからないんだけど、
「^[ア-ンァ-ッ]*$」とか書いたんだけど、これで半角の「ア」~「ン」、「ァ」~「ョ」、「ッ」がチェックできると思って、全文字入力チェックしたんですよ。

すると、何故か「ヲ」だけチェックをすり抜ける。。。

※省いてるけど、濁点・半濁点・長音符も含んでました

原因は文字コード表見ると一目瞭然でした。

半角カタカナの文字コード上での並び順が酷い(笑)

誰がこんな並びにしたのか・・・

f:id:infrase:20180315222601j:plain

見てわかるんだけど、なんで「ヲ」が「ァ」の前にあるの・・・???

 

「^[ア-ンヲ-ッ]*$」で解決。ふざけんな。

軽く調べてみたら、以下のような情報が。

oshiete.goo.ne.jp

なんか大正時代に山下芳太郎って人がキー配列を決めたせいらしい

 

これも社内ナレッジで共有しとこ。

 

プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)

プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)