Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

RegExp.prototype.unicode

BaselineWidely available

unicodeRegExp インスタンスのアクセサープロパティで、この正規表現にu フラグが使用されているかどうかを返します。

試してみましょう

const regex1 = new RegExp("\u{61}");const regex2 = new RegExp("\u{61}", "u");console.log(regex1.unicode);// Expected output: falseconsole.log(regex2.unicode);// Expected output: trueconsole.log(regex1.source);// Expected output: "a"console.log(regex2.source);// Expected output: "a"

解説

RegExp.prototype.unicode の値はtrue ならばu フラグが使用されていることを示し、そうでなければfalse となります。u フラグは Unicode に関連する様々な機能を有効にします。 "u" フラグを使用すると、次のようになります。

  • Unicode コードポイントエスケープ ( \u{xxxx}, \p{UnicodePropertyValue}) は、ID エスケープの代わりにそのように解釈されます。例えば、/\u{61}/u"a" に一致しますが、/\u{61}/u フラグなし)は"u".repeat(61) に一致します。\uu 1 文字と同等になるからです。
  • サロゲートペアは 2 つの別々の文字ではなく、全体の文字として解釈されます。例えば/[😄]/u"😄" にのみ一致し、"\ud83d" には一致しません。
  • lastIndex が自動的に進む場合(exec() を呼び出した場合など)、Unicode 正規表現は UTF-16 コード単位ではなく Unicode コードポイント単位で進みます。

構文の間違いを防ぐために、構文解析の動作を変更したものが他にもあります(正規表現構文の厳格モードに似ています)。これらの構文はすべて非推奨であり、ウェブの互換性のためだけに残されているものですので、頼らないでください。

unicode の設定アクセサーはundefined です。このプロパティを直接変更することはできません。

Unicode 対応モード

Unicode 対応モードと言う言葉を使うときは、u またはv のどちらかのフラグがついた正規表現を指し、この場合は正規表現が Unicode に関連した機能(Unicode 文字クラスエスケープなど)が利用できるようになり、もっと厳格化した構文ルールになります。uv は同じ正規表現を互換性のない方法で解釈するため、両方のフラグを使用するとSyntaxError になります。

同様に、正規表現がu フラグもv フラグも持たない場合、Unicode 非対応モードとなります。この場合、正規表現は UTF-16 コード単位の並びとして解釈され、たくさんの古い構文が構文エラーにならなくなります。

unicode プロパティの使用

js
const regex = /\u{61}/u;console.log(regex.unicode); // true

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-get-regexp.prototype.unicode

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp