RegExp.prototype.source

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 の定義
ドラフト  

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
sourceChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 4Opera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 1.0nodejs 完全対応 あり
"(?:)" for empty regexpsChrome 完全対応 73Edge 完全対応 12Firefox 完全対応 38IE 未対応 なしOpera 完全対応 60Safari 完全対応 ありWebView Android 完全対応 73Chrome Android 完全対応 73Firefox Android 完全対応 38Opera Android 完全対応 52Safari iOS ? Samsung Internet Android 未対応 なしnodejs ?
EscapingChrome 完全対応 73Edge 完全対応 12Firefox 完全対応 38IE 完全対応 10Opera 完全対応 60Safari ? WebView Android 完全対応 73Chrome Android 完全対応 73Firefox Android 完全対応 38Opera Android 完全対応 52Safari iOS ? Samsung Internet Android 未対応 なしnodejs ?
Prototype accessor property (ES2015)Chrome 完全対応 48Edge 完全対応 12Firefox 完全対応 41IE 完全対応 4Opera 完全対応 35Safari 完全対応 ありWebView Android 完全対応 48Chrome Android 完全対応 48Firefox Android 完全対応 41Opera Android 完全対応 35Safari iOS 完全対応 ありSamsung Internet Android 完全対応 5.0nodejs 完全対応 あり

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明

関連項目