Можно попробовать использовать конструктор.
Например,
var patt = new RegExp('hello');
if (patt.constructor === RegExp) {
// do stuff...
}
Можно использовать и для массивов (которые, как известно, в JS являются объектами и
typeof этому подтверждение).
При этом массив можно объявлять не через
new, а просто
[ ].
Ещё можно проверять через
patt instanceof RegExp, но как показывает
jsperf этот способ меленее (даже
isArray() медленнее для массивов), чем проверка конструктором.
Правда, с
null и
undefined это не сработает. В этом случае можно объединить и записать:
var patt = new RegExp('hello');
if (typeof patt === "undefined" || patt === null || patt.constructor === RegExp) {
// do stuff...
}