Saturday, June 1, 2024
 Popular · Latest · Hot · Upcoming
15
rated 0 times [  16] [ 1]  / answers: 1 / hits: 53552  / 14 Years ago, thu, december 2, 2010, 12:00:00

Is there anyway to detect if a JavaScript object is a regex?



For example, I would like to do something like this:



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


Is this possible?



Thanks!



EDIT: Thanks for all the answers. It seems I have two very good choices:



obj.constructor.name === RegExp


or



obj instanceof RegExp


Any major pros/cons to either method?



Thanks again!


More From » regex

 Answers
2

You can use instanceof operator:



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


In fact, that is almost the same as:



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


Keep in mind that as RegExp is not a primitive data type, it is not possible to use typeof operator which could be the best option for this question.



But you can use this trick above or others like duck type checking, for example, checking if such object has any vital methods or properties, or by its internal class value (by using {}.toString.call(instaceOfMyObject)).


[#94758] Tuesday, November 30, 2010, 14 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
kaitlynd

Total Points: 470
Total Questions: 108
Total Answers: 120

Location: Faroe Islands
Member since Thu, Apr 8, 2021
3 Years ago
kaitlynd questions
;