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

ブラウザーの互換性

BCD tables only load in the browser

関連情報