1. TOPTOP
  2. Webサービス
  3. JavaScript

ひらがな・カタカナ・漢字のパターンマッチ ~JavaScriptによる正規表現

thumbnail

徹底マスター JavaScriptの教科書(新しいタブで開く)を読んでいると、P325に[](大かっこ)によるパターンマッチの例が紹介されています。その中で半角英数字だけでなく、日本語のひらがな・カタカナ・漢字のパターンマッチについても言及されています。普段は[]の中では半角英数字しか見たことがなかったので、どんなものかさっそく使ってみました。

RegExpオブジェクトのtestメソッドでひらがな・カタカナ・漢字のパターンマッチ

今回の記事ではRegExpオブジェクトのtestメソッドを用いて、パターンマッチを行います。testメソッドを用いると、返り値としてtrue or false の論理値が返ります。

testメソッドの使い方

まずはよく見かける半角英数字を用いて、testメソッドを確認しましょう。この場合、trueが返ります。

console.log(/[a-zA-Z0-9]/.test("10 little English boys")); 

ひらがなとカタカナのパターンマッチ

次にひらがなとカタカナでUnicodeプロパティがサポートされない場合のtestメソッドを確認しましょう。どちらもtrueが返ります。

console.log(/[\u3041-\u3096]/.test("いろはにほへとちりぬるをわかよたれそつねなら")); 
console.log(/[\u30A1-\u30FA]/.test("イロハニホヘトチリヌルヲワカヨタレソツネナラム"));

ちなみにUnicodeプロパティがサポートされていない場合のパターンマッチについてはこちらの記事(新しいタブで開く)を参考にしてください。

漢字のパターンマッチ

漢字のパターンマッチをしてみましょう。console.logをすると、上からtrue,false,trueが返ります。

console.log(/[\u3400-\u9FFF]/.test("國破山河在城春草木深"));  
console.log(/[\uF900-\uFAFF]/.test("国破山河在城春草木深"));
console.log(/[\uF900-\uFAFF]/.test("福")); 

1行目はCJK統合漢字、2、3行目はCJK互換漢字(新しいタブで開く)のパターンマッチを行なっています。Wikipediaなどで調べると、一般的に漢字のパターンマッチを行うときは、CJK統合漢字のコードを用いる方が良いと思います。CJK互換漢字は、パターンマッチの対象となる漢字が比較的特殊な字であることが、あらかじめ分かっているようなときに用いるのでしょう。

なお漢字についても場合も、Unicodeプロパティがサポートされていない場合のパターンマッチを行なっています。Unicodeプロパティがサポートされている場合は、上述したリンクの記事をご覧ください。

日本語のパターンマッチの応用例

いろは48文字を使った和歌について漢字とひらがなのパターンマッチを行いました。この場合、trueが返ります。

console.log(/[\u3041-\u3096\u3400-\u9FFF]/.test("色は匂えど散りぬる我が世誰ぞ常ならむ"));

なお今回の記事に関するコードはGitHub(新しいタブで開く)にもアップしています。半角英数字だけでなく、日本語のパターンマッチを知っておくと何かと便利だと思います。この記事がJavaScriptによるプログラミングを学習されるときのご参考になれば幸いです。

【参考サイト】