RegExp.prototype.toString()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

toString()RegExp インスタンスのメソッドで、は正規表現を表す文字列を返します。

試してみましょう

console.log(new RegExp("a+b+c"));
// Expected output: /a+b+c/

console.log(new RegExp("a+b+c").toString());
// Expected output: "/a+b+c/"

console.log(new RegExp("bar", "g").toString());
// Expected output: "/bar/g"

console.log(new RegExp("\n", "g").toString());
// Expected output (if your browser supports escaping): "/\n/g"

console.log(new RegExp("\\n", "g").toString());
// Expected output: "/\n/g"

構文

js
toString()

引数

なし。

返値

呼び出し元のオブジェクトを表す文字列です。

解説

RegExp オブジェクトの toString() メソッドは、 Object オブジェクトのものを上書きします。つまり Object.prototype.toString() を継承しません。 RegExp オブジェクトにおける toString() メソッドは、その正規表現オブジェクトを表す文字列を返します。

実際には、正規表現の sourceflags プロパティを読み、 /source/flags 形式の文字列を返します。 toString() の返値は解釈可能な正規表現リテラルであることが保証されますが、元々正規表現に指定されていたものと全く同じテキストではない可能性があります (例えば、フラグの並び順が変更されている可能性があります)。

toString() の使用

以下の例は RegExp オブジェクトの文字列の値を表示します。

js
const myExp = new RegExp("a+b+c");
console.log(myExp.toString()); // '/a+b+c/'

const foo = new RegExp("bar", "g");
console.log(foo.toString()); // '/bar/g'

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

toString()source プロパティにアクセスするので、空の正規表現は "/(?:)/" という文字列を返し、 \n のような改行文字はエスケープされます。これにより、返値は常に有効な正規表現リテラルになります。

js
new RegExp().toString(); // "/(?:)/"

new RegExp("\n").toString() === "/\\n/"; // true

仕様書

Specification
ECMAScript® 2025 Language Specification
# sec-regexp.prototype.tostring

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
toString
Line breaks and slashes are escaped

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報