【JavaScript】Unicodeプロパティで文字列が日本語のみか判定する
※本ページのリンクにはプロモーションが含まれています。
こんにちは、Ryohei(@ityryohei)です!
本記事では、JavaScriptで文字列が日本語のみか判定する方法をご紹介しています。Unicodeの文字コード範囲による正規表現ではなく、Unicodeプロパティで文字列が日本語か判定する方法をご紹介します。
JavaScriptで特定の文字列が日本語か判定したいな。良い方法ないかな?
上記の疑問にお答えします。
では、解説していきます。Unicodeプロパティとは
Unicodeプロパティは、正規表現で文字列を照合する際に指定することができる値です。例えば正規表現である文字列に平仮名が含まれるかを照合する場合[ぁ-ん]
のように表現していましたが、Unicodeプロパティを使うと下記のように指定することができます。
\p{Hiragana}/
文字コード範囲等で指定するよりもシンプルでわかりやすいですね。2024年現在、主要ブラウザもUnicodeプロパティに対応していますので、今後は積極的に取り入れても良さそうですね。
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入門時に購入した書籍で、基礎から応用まで多様なサンプルを用いて解説されています。ページ数は多いですが、内容が伴っているのですらすら読めます。腰を据えて学びたい方に最良の一冊となっています。