JS在特定时间范围内执行正则表达式

时间:2011-06-23 09:37:11

标签: javascript regex

是否可以在特定时间范围内执行正则表达式?例如,我们执行regex r并等待它完成最多5秒,否则我们取消。这是否是任何人都有过的经历?

3 个答案:

答案 0 :(得分:2)

我现在能想到的唯一方法是使用WebWorkers API在一个单独的线程中运行Regex,并在主线程中使用一个计时器来表示'timeout'并使用{杀死工作线程{1}}语法。但是,这会给表带来一大堆问题,因为工作线程没有对DOM的任何访问权限,并且纯粹就像一个简单的消息总线。

答案 1 :(得分:1)

在JavaScript中评估正则表达式是一种阻塞操作,因此您没有机会计时并取消其执行。一个可能的解决方案是使用web workers - 但我对这些没有任何经验。

答案 2 :(得分:0)

我不太确定“执行”是什么意思,但在某些情况下,可以将阻塞操作转换为循环:

s = "long thing"
re = /[a-z]/g

// blocks
matches = s.match(re)

// doesn't block
matches = []
while(m = re.exec(s)) {
 matches.push(m[0])
 do your time check here
}