Проверить, присутствует ли
RegExp
в цепочке прототипов:
x instanceof RegExp
.
Или, посмотреть, не является ли
RegExp
конструктором значения:
x?.constructor === RegExp
.
А вообще, можно и в более общем виде задачу решить - сделать функцию, которая будет определять тип переданного значения, а дальше уже проверять, что она возвращает.
Можно получать сам тип данных (т.е., конструктор или само значение, если оно nullish):
const type = x => x == null ? x : x.constructor;
type() === undefined // true
type(null) === null // true
type(/./) === RegExp // true
type(666) === Number // true
type(type) === Function // true
А можно - имя типа:
const typename = x => x?.constructor.name ?? `${x}`;
typename() // 'undefined'
typename(null) // 'null'
typename(false) // 'Boolean'
typename(187) // 'Number'
typename('hello, world!!') // 'String'
typename(/./) // 'RegExp'
typename({}) // 'Object'
typename([]) // 'Array'
typename(document.body) // 'HTMLBodyElement'
typename(document.getElementsByClassName('xxx')) // 'HTMLCollection'
typename(new class XXX {}) // 'XXX'
typename(typename) // 'Function'