在JavaScript中,可以使用 instanceof
运算符和 RegExp
对象来判断一个变量是否为正则表达式。
示例代码:
let regex = /test/;
let notRegex = "test";
console.log(regex instanceof RegExp); // true
console.log(notRegex instanceof RegExp); // false
console.log(regex.constructor === RegExp); // true
console.log(notRegex.constructor === RegExp); // false
console.log(Object.prototype.toString.call(regex) === "[object RegExp]"); // true
console.log(Object.prototype.toString.call(notRegex) === "[object RegExp]"); // false
其中,instanceof
运算符用来检查一个对象是否是某个构造函数的实例,可以用于检查一个变量是否为 RegExp
对象。
另外,可以通过判断对象的 constructor
属性是否为 RegExp
来判断一个变量是否为正则表达式。
还可以使用 Object.prototype.toString.call()
方法,以字符串形式返回变量的类型,再判断字符串是否为 "[object RegExp]"
来判断一个变量是否为正则表达式。
需要注意的是,以上判断方式都只能判断一个变量是否为 RegExp
对象,而不能判断其是否是有效的正则表达式。