如何判断一个对象是否是RegExp对象

How to tell if an object is a RegExp object?

本文关键字:一个对象 是否是 RegExp 对象 判断 何判断      更新时间:2023-09-26

可能重复:
RegExp 的类型

我有一个例行程序,用来测试一个对象是否符合给定的标准。

testForMatch(objectToTest, matchCriteria) {
    // all my testing logic here.
}

参数matchCriteria是一个看起来像这样的对象,例如:

{
    'size'     : "large",
    'color'    : /(blue|red)/
}

上述示例中的这个matchCriteria将用于测试objectToTest是否具有值为"large"的属性size和值为"blue""red"的属性color

因此,matchCriteria具有将在objectToTest中查找的属性/属性名称,目的是匹配属性的值。或者,如果给定正则表达式作为值(如上面的color的情况(,则objectToTest中的属性将根据给定的正则表达式为RegExp.test()'。

但是,为了正确处理testForMatch()中的matchCriteria,我需要能够判断matchCriteria中的属性值是字符串还是RegExp对象。

我的问题是,如何检测属性的值是否是RegExp对象?

怎么样

var o = {
    'size' : "large",
    'color': /(blue|red)/
}
console.log( o['color'] instanceof RegExp )
>>true