检测变量是否为模式

Detect If Variable Is A Pattern

我想不出检测变量是否为正则表达式的方法。但我还需要弄清楚它是否是一个对象,所以我不能使用 typeof(regex) === 'object' 并依赖它,因为它可能因为 if 语句将执行它,就好像它是一个正则表达式一样。但我希望它也能在 旧版浏览器 中工作。任何帮助将不胜感激。

var regex= /^[a-z]+$/;

//...Some code that could alter the regex variable to become an object variable.



if (typeof(regex) === 'object') {
    console.log(true);
}

您可以使用instanceOf

var regex= /^[a-z]+$/;

//...Some code that could alter the regex variable to become an object variable.



if (regex instanceof RegExp) {
    console.log(true);
}

有很多方法可以做到这一点,包括:

var regex= /^[a-z]+$/;

// constructor name, a string
// Doesn't work in IE
console.log(regex.constructor.name === "RegExp"); // true
// instanceof, a boolean
console.log(regex instanceof RegExp); // true
// constructor, a constructor
console.log(regex.constructor == RegExp); // true