JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScript正規表現で\uxxxxを使って16進数指定のUnicode文字にマッチさせる方法

JavaScriptの正規表現では、\uxxxx というパターンを使用することで、4桁の16進数(xxxx)で指定されたUnicode文字と一致させることができます。

基本構文

\uxxxx

「xxxx」の部分には、マッチさせたい文字のUnicodeコードポイントを16進数で指定します。たとえば、英大文字「S」のUnicodeコードポイントは U+0053 であるため、正規表現上では \u0053 と記述することで「S」と同じ意味になります。

使用例

以下のサンプルコードでは、文字列内から16進数の53(つまり文字「S」)に該当する部分をすべて検索し、マッチさせています。

<html>
   <head>
      <title>JavaScript Regular Expression</title>
   </head>

   <body>
      <script>
         var myStr = "Secure and Responsive!";
         var reg = /\u0053/g;
         var match = myStr.match(reg);
         
         document.write(match);
      </script>
   </body>
</html>

実行結果

このコードを実行すると、対象文字列「Secure and Responsive!」の中から「S」に相当する文字が検索され、次のような結果が出力されます。

S,S

ポイント解説

正規表現の末尾に付けている g フラグ は「グローバルマッチ」を意味し、文字列内のすべての該当箇所を取得します。gフラグを外した場合は、最初に見つかった1件のみが返される点に注意してください。

また、\uxxxx 表記はUnicodeエスケープシーケンスとも呼ばれ、特殊な記号や多言語の文字を正規表現で扱いたい場合にも活用できます。4桁では表現できない U+10000 以降の文字(絵文字など)については、サロゲートペアや u フラグ(Unicodeモード)を組み合わせて対応します。

  1. C#の書式指定文字列における「\」エスケープ文字の使い方

    C#の数値を文字列に変換する際、書式指定文字列の中にある「#」「0」「.」「,」「%」「‰(パーミル)」といった記号は、すべて書式指定子として解釈されます。これらの記号を書式指定子ではなく、そのままリテラル文字として出力したい場合は、直前にエスケープ文字であるバックスラッシュ(\)を付ける必要があります。また、「#」「0」「\」自体をエスケープ文字として扱いたくない場合も、同様にバックスラッシュでエスケープします。特に「\」を出力したいときは「\\」と記述する点に注意しましょう。サンプルコード以下の例では、「##」という文字をそのまま表示するために、それぞれの「#」の前にエスケープ文字(バック

  2. Javaで文字のUnicodeカテゴリを判定する方法(Character.getType()の使い方)

    JavaのCharacterクラスはObjectクラスのサブクラスであり、プリミティブ型であるcharの値をオブジェクトとしてラップするためのクラスです。Character型のオブジェクトは、char型のフィールドを1つだけ持ちます。特定の文字がどのUnicodeカテゴリに属するかを調べたい場合は、getType()メソッドを使用します。このメソッドはCharacterクラスのstaticメソッドで、引数に渡された文字chが属するUnicodeの一般カテゴリ(General Category)を表すint型の値を返します。構文public static int getType(char ch)