このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
RegExp.prototype.unicode
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2016年9月.
unicode はRegExp インスタンスのアクセサープロパティで、この正規表現にu フラグが使用されているかどうかを返します。
In this article
試してみましょう
const regex1 = /\u{61}/;const regex2 = /\u{61}/u;console.log(regex1.unicode);// 予想される結果: falseconsole.log(regex2.unicode);// 予想される結果: true解説
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)に一致します。\uがu1 文字と同等になるからです。 - サロゲートペアは 2 つの別々の文字ではなく、全体の文字として解釈されます。例えば
/[😄]/uは"😄"にのみ一致し、"\ud83d"には一致しません。 lastIndexが自動的に進む場合(exec()を呼び出した場合など)、Unicode 正規表現は UTF-16 コード単位ではなく Unicode コードポイント単位で進みます。
構文の間違いを防ぐために、構文解析の動作を変更したものが他にもあります(正規表現構文の厳格モードに似ています)。これらの構文はすべて非推奨であり、ウェブの互換性のためだけに残されているものですので、頼らないでください。
unicode の設定アクセサーはundefined です。このプロパティを直接変更することはできません。
Unicode 対応モード
Unicode 対応モードと言う言葉を使うときは、u またはv のどちらかのフラグがついた正規表現を指し、この場合は正規表現が Unicode に関連した機能(Unicode 文字クラスエスケープなど)が利用できるようになり、もっと厳格化した構文ルールになります。u とv は同じ正規表現を互換性のない方法で解釈するため、両方のフラグを使用するとSyntaxError になります。
同様に、正規表現がu フラグもv フラグも持たない場合、Unicode 非対応モードとなります。この場合、正規表現は UTF-16 コード単位の並びとして解釈され、たくさんの古い構文が構文エラーにならなくなります。
例
>unicode プロパティの使用
const regex = /\u{61}/u;console.log(regex.unicode); // true仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-get-regexp.prototype.unicode> |