source プロパティは、regexp オブジェクトのソーステキストを含む String を返します。これには、両サイドの 2 つのスラッシュやフラグは含まれません。

RegExp.prototype.source のプロパティ属性
書込可能 不可
列挙可能 不可
設定可能

source の使用

var regex = /fooBar/ig;

console.log(regex.source); // "fooBar", は /.../ と "ig" を含まない。

空の正規表現とエスケープ

ECMAScript 5 から、source プロパティは空の正規表現に対して空文字を返さなくなりました。代わりに、"(?:)" 文字列を返します。加えて、("\n" のような)行区切りはエスケープされます。

new RegExp().source; // "(?:)"

new RegExp('\n').source === "\n";  // ES5 以前で、true 
new RegExp('\n').source === "\\n"; // ES5 から、true

仕様

仕様 ステータス コメント
ECMAScript 3rd Edition (ECMA-262) 標準 初期定義。JavaScript 1.2 で実装。JavaScript 1.5: sourceRegExp インスタンスのプロパティであり、RegExp オブジェクトのプロパティではありません。
ECMAScript 5.1 (ECMA-262)
RegExp.prototype.source の定義
標準 空の正規表現に対して source プロパティは、空文字の代わりに "(?:)" を返します。エスケープに対する振る舞いの定義が追加されました。
ECMAScript 2015 (6th Edition, ECMA-262)
RegExp.prototype.source の定義
標準 source は、インスタンス所有のデータプロパティというよりは、プロトタイプアクセッサプロパティとなりました。
ECMAScript Latest Draft (ECMA-262)
RegExp.prototype.source の定義
ドラフト  

ブラウザ実装状況

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート (有) (有) (有) (有) (有)
空文字に対する "(?:)" ? 38 (38) ? ? (有)
エスケープ ? 38 (38) ? ? ?
プロトタイプアクセッサプロパティ ? 41 (41) ? ? ?
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート (有) (有) (有) (有) (有) (有)
空文字に対する "(?:)" ? ? 38.0 (38) ? ? ?
エスケープ ? ? 38.0 (38) ? ? ?
プロトタイプアクセッサプロパティ ? ? 41.0 (41) ? ? ?

関連項目

ドキュメントのタグと貢献者

このページの貢献者: YuichiNukiyama, teoli, ethertank, Potappo, Mgjbot
最終更新者: YuichiNukiyama,