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 2017 Draft (ECMA-262)
RegExp.prototype.source の定義
ドラフト  

ブラウザ実装状況

機能 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,