首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >RegExp的typeof

RegExp的typeof
EN

Stack Overflow用户
提问于 2010-12-03 04:01:06
回答 6查看 46.8K关注 0票数 167

有没有办法检测JavaScript对象是否是正则表达式?

例如,我想这样做:

代码语言:javascript
复制
var t = /^foo(bar)?$/i;
alert(typeof t); //I want this to return "regexp"

这个是可能的吗?

谢谢!

编辑:感谢您的回答。看起来我有两个非常好的选择:

代码语言:javascript
复制
obj.constructor.name === "RegExp"

代码语言:javascript
复制
obj instanceof RegExp

这两种方法都有什么主要的优缺点吗?

再次感谢!

EN

回答 6

Stack Overflow用户

发布于 2010-12-03 04:05:15

.constructor属性转一转:

代码语言:javascript
复制
> /^foo(bar)?$/i.constructor
function RegExp() { [native code] }
> /^foo(bar)?$/i.constructor.name
"RegExp"
> /^foo(bar)?$/i.constructor == RegExp
true
票数 14
EN

Stack Overflow用户

发布于 2010-12-03 04:05:23

来自underscore.js

代码语言:javascript
复制
// Is the given value a regular expression?
  _.isRegExp = function(obj) {
    return !!(obj && obj.test && obj.exec && (obj.ignoreCase || obj.ignoreCase === false));
  };
票数 10
EN

Stack Overflow用户

发布于 2010-12-03 04:04:54

在google chrome中工作:

代码语言:javascript
复制
x = /^foo(bar)?$/i;
x == RegExp(x); // true
y = "hello";
y == RegExp(y); // false
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4339288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档