我們今天缺乏這個理由,是否有充分的理由?如果是的話,這是否可以解決?或者,它是否會像其中一個會破壞向後兼容性的東西?JS正則表達式是否會看起來向後看?
回答
我在2010年發現了一個mailing-list thread關於這個問題。
顯然,當EcmaScript 3正在開發中時,他們看到了Perl 的正則表達式特徵。 Waldemar Horwat寫到爲什麼在該標準中沒有添加後視 :
ES3規範是基於當時穩定的。 Perl有 正在用regexp的其他結構進行試驗,但是有一些在那裏的流失,我不想去找那些仍然在變化的 的功能。
在稍後的帖子中,Marc Harter創建了a proposal用於添加 此功能。
其餘的討論是關於 提案的具體細節;沒有人有任何理由對包括它在下一個 標準。
不幸的是,討論沒有解決就結束了。 EcmaScript和諧wiki上有一個 頁面,但它所做的只是鏈接到 提案和郵件列表線程。
所以它似乎沒有明顯的原因反對添加倒序 功能的JavaScript正則表達式。然而,也似乎 沒有更多的活動向加入他們要麼 - 我懷疑 開發商和語言的設計者是迄今發生較大的變化 他們正在計劃爲ES 6.
分心,我認爲你最好的選擇現在將再次在 es-discuss郵件列表中提出主題。我不知道 的確切政策,特別是列出的,但我懷疑人們會很好,至少 再次談論它;也許有人甚至會向 尋求支持下一個標準。
哇,很好的回答!謝謝。 他們專注於什麼更大的變化?我意識到會發生巨大的變化,我從未真正理解他們中的任何一個,我已經看到他們提到過。 – haxxerz
我不完全確定 - 現在我在過去的一年左右已經從JavaScript轉向更加綠色的牧場。我記得一些有趣的功能,比如Python風格的生成器,代理,可選的括號,新的lambda語法(涉及'#',我認爲)以及可能還有一些其他的東西。也就是說,我不記得哪些是真正的建議,哪些只是一廂情願的博客文章:P。 [維基](http://wiki.ecmascript.org/doku.php)是一個全面的,相當方便的資源,可以查看標準化人員正在考慮的想法。 –
似乎沒有搜索['es-discuss'郵件列表](https://mail.mozilla.org/pipermail/es-discuss/)。所以我想知道是否有人像Tikhon所說的那樣再次向他們提到那個話題。 @haxxerz:你曾經在那裏發過什麼? –
我當時並不在身邊,所以我不知道爲什麼lookbehind最初並不存在,但是這裏有一些ES6之後的活動,我爲Fletch寫了一個.Net風格的lookbehind實現,這是Dart的一個實現(與dart2js和DartVM一樣)具有JS兼容的正則表達式。
它被移植到V8作爲一個實驗性功能,並且V8端口被移植到Firefox。它帶有--harmony-regexp-lookbehind標誌在撰寫本文時,沒有用戶界面來激活它
你可以在https://dartpad.dartlang.org/8feea83c01ab767acdf1上玩一個Fletch實現版本,你可以試試。網眼風格在http://www.regexplanet.com/advanced/dotnet/index.html
與perl和python以及大多數其他regexp引擎不同,這是一個不受限制的lookbehind實現:JS regexps中允許的所有功能也可以在lookbehinds中工作,例如*和+。和{},向後看,向後看,向後看。我希望能找到能夠幫助實現標準化的人。如果在一年內ECMAScript仍然沒有向後看的支持,那麼原因可能是沒有人能夠找到這個標準的章節。
Lookbehinds(以及命名捕獲組)是proposed to be added to ECMAScript。
目前有一個規範草案,TC39組似乎是積極的建議和Chrome has already implemented it(落後國旗)和Firefox may follow soon。還有一個request to uplift the proposal to the next stage。
一些好消息:V8已經得到了JS回顧後:http://v8project.blogspot.in/2016/02/regexp-lookbehind-assertions.html
這使得它的方式到V6.0.0的NodeJS +(該--harmony標誌後面): https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V6.md#2016-04-26-version-600-current-jasnell
- 1. 正則表達式與向前看和向後看
- 2. 命名爲正則表達式,向前看和向後看
- 3. 正則表達式正面看後面的正則表達式反向匹配?
- 4. 負向前看去正則表達式
- 5. java FilenameFilter正則表達式(向前看)
- 6. Perl的正則表達式向前看
- 7. 正則表達式向前看
- 8. 正則表達式與向前看,看看屁股
- 9. 正則表達式來看看最後一個字符是「U」或「C」
- 10. 正則表達式沒有結尾,沒有向前看或向後看
- 11. 任何正則表達式提琴手是否完全支持向後看?
- 12. Java正則表達式匹配:負面看起來不工作
- 13. 在shell腳本中使正則表達式看起來不錯
- 14. 正則表達式:更換刺,看起來像什麼(值)值
- 15. 使用OR正則表達式的多個匹配向後看
- 16. 解決方法缺乏向後看Javascript的正則表達式
- 17. 正則表達式 - 積極向後看問題
- 18. 向後看的Java正則表達式組不具有近
- 19. Python正則表達式向前看後面
- 20. PCRE:(+)和( - )向前看/後面(正則表達式)
- 21. 升壓/ Perl的正則表達式向後看含OR
- 22. 正則表達式負向後看在hgignore文件
- 23. 正則表達式攜帶看看後面的IP地址
- 24. Python的正則表達式,看看後面和替代方案
- 25. .NET使用正則表達式後面看看/超前
- 26. 看正則表達式是否返回Ruby中沒有匹配
- 27. 正則表達式爲Rails斷言,看看路徑是否匹配
- 28. 紅寶石的正則表達式,看看是否只有數字
- 29. 爲什麼看起來像Perl正則表達式中的*不是貪婪?
- 30. scala正則表達式replaceAllIn不能替換時,替換字符串看起來像一個正則表達式?
JS已經支持先行,不是嗎?詢問爲什麼它不支持* lookbehind *當然仍然很有趣。 –
改變我只是爲了看後面。 – haxxerz
雖然我很想知道。 – haxxerz