是否可以在特定时间范围内执行正则表达式?例如,我们执行正则表达式r,我们等待它完成最多5秒,否则我们取消。这是任何人有经验的东西吗?JS在特定时间范围内执行正则表达式
1
A
回答
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
}
2
我现在想的唯一方法就是在单独的线程中使用WebWorkers API运行正则表达式,并在主线程中使用计时器来表示'超时'并使用myTimer.terminate();
语法来终止工作线程。然而,这会给表格带来一大堆问题,因为工作线程没有任何访问DOM的行为,并且完全像一个简单的消息总线。
1
在JavaScript中评估正则表达式是一种阻塞操作,因此您没有时间和取消其执行的机会。一个可能的解决方案将使用web workers - 但我没有任何经验。
相关问题
- 1. 如何创建用于检查特定时间范围的正则表达式
- 2. 正则表达式或OR两个范围正则表达式
- 3. 正则表达式在特定范围内的逗号分隔数字
- 4. 从数字到特定字符的正则表达式范围
- 5. Java执行程序在特定时间的时间范围
- 6. 正则表达式,检查特定长度范围内的数字。 C#/ ASP.NET
- 7. 正则表达式的贪婪范围
- 8. 数字范围的正则表达式
- 9. perl正则表达式无效范围
- 10. Java的正则表达式范围
- 11. 正则表达式的具体范围
- 12. 正则表达式范围1-50
- 13. 正则表达式的年份范围
- 14. ASP.NET正则表达式编号范围
- 15. 正则表达式 - 可选范围
- 16. 正则表达式编号范围
- 17. 爪哇正则表达式数范围
- 18. 组正则表达式超出范围
- 19. VBA +正则表达式+范围。更换
- 20. 正则表达式 - 范围(2-16)?
- 21. 正则表达式:数字范围
- 22. 正则表达式的数字范围
- 23. Graphite storage-aggregation.conf正则表达式范围
- 24. 货币范围正则表达式
- 25. 正则表达式数字范围
- 26. 正则表达式数字范围prasing
- 27. 正则表达式匹配IP范围?
- 28. 正则表达式捕获执行时间后的特定文本
- 29. Ruby编号范围正则表达式在1-200之间
- 30. 正则表达式多在更广泛的范围内
如何是第二个例子无阻塞?我以为're.exec(s)'会在一次调用中评估整个's'字符串,这意味着''while'循环只会执行一次。但我可能是错的。 –
事实上,废话 - 我现在明白你的意思。然而,如果两次匹配之间的时间少于5秒,这肯定会起作用 - 即只有当匹配发生时,while循环内的代码才会执行,并且如果在匹配之间超过5秒钟,代码会阻塞直到下一个匹配被发现。是对的吗? –
谢谢,这是一个公平的观点 - 显然对Web Workers的浏览器支持有限,而您的解决方案使用Javascript的本地语言功能。 –