1. ホーム
  2. javascript

[解決済み] RegExpのtypeof

2022-04-23 08:10:40

質問

JavaScriptのオブジェクトが正規表現であるかどうかを検出する方法はありますか?

例えば、以下のようなことをしたいのですが。

var t = /^foo(bar)?$/i;
alert(typeof t); //I want this to return "regexp"

これは可能か?

ありがとうございます。

EDIT: すべての回答ありがとうございました。私は2つの非常に良い選択をしたようです。

obj.constructor.name === "RegExp"

または

obj instanceof RegExp

どちらの方法でも、大きな長所・短所があれば教えてください。

ありがとうございました。

解決方法は?

を使用することができます。 インスタンスオブ 演算子を使用します。

var t = /^foo(bar)?$/i;
alert(t instanceof RegExp);//returns true

実際、それは ほとんど と同じです。

var t = /^foo(bar)?$/i;
alert(t.constructor == RegExp);//returns true

として覚えておいてください。 RegExp プリミティブデータ型 を使用することはできません。 typeof 演算子で 最良の選択である という質問に対して

しかし、上記のこのトリックや、その他にも ダックタイプ 確認 例えば、そのオブジェクトが重要なメソッドやプロパティを持っているかどうかをチェックしたり、そのオブジェクトの 内部クラス値 (を使用することにより)。 {}.toString.call(instaceOfMyObject) ).