【JavaScript】Unicodeプロパティで文字列が日本語のみか判定する

こんにちは、ryohei(@ityryohei)です!

本記事では、JavaScriptで文字列が日本語のみか判定する方法をご紹介しています。Unicodeの文字コード範囲による正規表現ではなく、Unicodeプロパティで文字列が日本語か判定する方法をご紹介します。

JavaScriptで特定の文字列が日本語か判定したいな。良い方法ないかな?

上記の疑問にお答えします。

では、解説していきます。

Unicodeプロパティとは

Unicodeプロパティは、正規表現で文字列を照合する際に指定することができる値です。例えば正規表現である文字列に平仮名が含まれるかを照合する場合[ぁ-ん]のように表現していましたが、Unicodeプロパティを使うと下記のように指定することができます。

\p{Hiragana}/

文字コード範囲等で指定するよりもシンプルでわかりやすいですね。2022年現在、主要ブラウザもUnicodeプロパティに対応していますので、今後は積極的に取り入れても良さそうですね。

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes

Unicodeプロパティで文字列が日本語か判定する

Unicodeプロパティで文字列が日本語か判定してみます。ここでは下記の3パターンの文字列を日本語とみなします。

  • ひらがな
  • カタカナ
  • 漢字

Unicodeプロパティを使ってテストしてみます。

ひらがな

const str = 'ひらがな';
const hiragana = /^[\p{scx=Hiragana}]+$/u;
hiragana.test(str);

//実行結果:true

カタカナ

const str = 'カタカナ';
const katakana = /^[\p{scx=Katakana}]+$/u;
katakana.test(str);

//実行結果:true

漢字

const str = '漢字';
const han = /^[\p{scx=Han}]+$/u;
han.test(str);

//実行結果:true

日本語(ひらがな・カタカナ・漢字)

const str = 'ひらがなカタカナ漢字';
const ja = /^[\p{scx=Hiragana}\p{scx=Katakana}\p{scx=Han}]+$/u;
ja.test(str);

//実行結果:true

これでUnicodeプロパティで日本語のみの文字列を判定することができました。本記事では説明を省略していますが、scxとはなんぞや、と気になった方はぜひ下記を参照してUnicodeプロパティの沼にハマってみてくださいね。

General_Category(gc)https://unicode.org/reports/tr18/#General_Category_Property
Script(sc)https://unicode.org/reports/tr24/#Script
Script_Extensions(scx)https://unicode.org/reports/tr24/#Script_Extensions

最後に

本記事では、Unicodeプロパティを使って、正規表現で文字列が日本語のみか判定してみました。Unicodeプロパティは奥が深いため、ここでは日本語のみを判定する方法にフォーカスしていますが、Unicodeプロパティを理解すればあらゆる文字列を制御できると思いますので、興味がある方はこれを機に勉強してみても良いかもしれませんね。

以上、JavaScriptを使って、Unicodeプロパティで文字列が日本語のみか判定する方法のご紹介でした!

JavaScriptを基礎からしっかりと学びたい方へ

下記の参考書がおすすめです。私がJavaScript入門時に購入した書籍で、基礎から応用まで多様なサンプルを用いて解説されています。ページ数は多いですが、内容が伴っているのですらすら読めます。腰を据えて学びたい方に最良の一冊となっています。

おすすめの書籍

Adobe Creative Cloudを通常価格で購入していませんか?

Adobe Creative Cloud(Adobe CC)はAdobe社が提供するクリエイター向けのサービスです。WEB制作の幅を広げる「Photoshop・Illustrator・XD」Youtuberや動画クリエイターの編集作業に欠かせない「Premiere Pro・After Effects」など全20以上のアプリが提供されており、幅広いプランが用意されています。

コンプリートプランはAdobe CCの全20以上のアプリが使用できるプランです。多くのアプリが使用できるため定価で購入すると年間7万円以上するプランですが、デジタルハリウッドのAdobeマスター講座では「基礎動画教材+Adobe CC コンプリートプラン(12ヵ月)」がセットになって39,980円(税込)で利用できます。定価より安価にAdobe Creative Cloudのライセンスを購入でき、以降のライセンス更新も可能。動画教材で基礎スキルを習得できるので、入門する方にも便利な講座です。詳しくは下記のリンクからチェックしてみてくださいね。

Adobeマスター講座はこちら