首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript: RegExp.compile()的意义是什么?

Javascript: RegExp.compile()的意义是什么?
EN

Stack Overflow用户
提问于 2009-05-19 20:07:16
回答 4查看 26.7K关注 0票数 56

我遇到了这样一种情况:我想从用户那里获得一个regexp,然后对几千个输入字符串运行它。在手册中,我发现RegExp对象有一个.compile()方法,用于在这种情况下加快速度。但是如果我已经在构造函数中传递了regexp字符串,为什么还要再次将它们传递给它呢?也许构造器会自己处理compile()

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-05-19 20:12:09

RegExp().compile() method is deprecated。它基本上与构造函数相同,我认为这就是它被弃用的原因。现在你应该只需要使用构造器。

换句话说,你以前可以这样做:

代码语言:javascript
复制
var regexp = new RegExp("pattern");
regexp.compile("new pattern");

但现在,它与简单的调用没有什么不同:

代码语言:javascript
复制
var regexp = new RegExp("pattern");
regexp = new RegExp("new pattern");
票数 94
EN

Stack Overflow用户

发布于 2011-03-09 02:32:50

而在Opera11中,运行RegExp.compile()实际上会导致错误。

显然,当Opera“编译”正则表达式时,它会用正斜杠包装re.source字符串(例如,re.source == "^(.)"变成了"/^(.)/")。如果您手动编译正则表达式,Opera将无法识别这一事实,并继续进行编译(re.source变为"//^(.)//")。每次编译都会产生一组额外的正斜杠,这会改变正则表达式的含义并导致错误。

票数 7
EN

Stack Overflow用户

发布于 2016-11-03 22:21:01

如果你使用的是/,你必须先编译你的正则表达式才能使用它,试试这个:

代码语言:javascript
复制
var regex=new RegExp('/[a-zA-Z]/')

console.log("not compiled with escape /", regex.test("ciao") )

regex.compile()

console.log("compiled", regex.test("ciao") )

var regex=new RegExp('[a-zA-Z]')

console.log("not compiled, but no escape /", regex.test("ciao") )

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/884762

复制
相关文章

相似问题

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