RegExpのtypeof 質問する

RegExpのtypeof 質問する

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

たとえば、次のようなことをしたいのです。

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

これは可能ですか?

ありがとう!

編集: 全ての回答に感謝します。 2 つの非常に良い選択肢があるようです:

obj.constructor.name === "RegExp"

または

obj instanceof RegExp

どちらの方法にも大きな長所/短所はありますか?

再度、感謝します!

ベストアンサー1

使用できますインスタンスオペレーター:

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

実際、それはほとんどと同じ:

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

覚えておいてほしいのは、正規表現ではないプリミティブデータ型typeof演算子を使用することはできません。最良の選択肢となるこの質問に対して。

しかし、上記のトリックや次のような他のトリックを使うこともできますアヒル型チェック中例えば、そのようなオブジェクトに重要なメソッドやプロパティがあるかどうかをチェックしたり、内部クラス値( を使用{}.toString.call(instaceOfMyObject))。

おすすめ記事