检测变量是否为模式
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
我想不出检测变量是否为正则表达式的方法。但我还需要弄清楚它是否是一个对象,所以我不能使用 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