是否可以在特定時間範圍內執行正則表達式?例如,我們執行正則表達式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的本地語言功能。 –