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: source は RegExp インスタンスのプロパティであり、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) | ? | ? | ? |