2012-09-26 75 views
6

我一直在閱讀道格拉斯克羅克福德的「JavaScript:The Good Parts」。在這篇文章中,他簡要介紹了正面和負面的展望,但不過是簡短地陳述他們的工作,並且他們不是JavaScript的一部分。正則表達式正面和負面看不好(JavaScript)?

除了這本書,我還沒有看到任何提及這些應該避免,無論是在SO或正則表達式指南網站上。我想知道是否可以進一步解釋爲什麼這些是JavaScript的一個不好的部分,以及它們應該如何避免 - 是否有更好的解決方案,還是更好的應用程序設計。


摘錄(第75頁):

正向前查找 正向前查找組有一個(=前綴它就像一個非捕獲組 除了小組賽之後,文字是?倒到所在組 開始,沒有有效匹配,這是不是一個好的一部分。

排除模式 負前瞻組有一個(?!字首。它就像一個積極的前瞻 組,除了只有匹配失敗時才匹配。這不是一個好的部分。

回答

4

道格拉斯克羅克福德的許多建議都是關於代碼的「可讀性」和「可擴展性」,而且關於編碼器意圖的「可擴展性」。與道格拉斯不推薦使用的方式相同,例如,正則表達式中的點,因爲它匹配任何字符,而不解釋你想要匹配的內容,使用負向預測等於說「我允許除此之外的任何內容」。無論如何,我無法想象爲什麼不推薦使用積極的lookaheads,但許多引用到IE中的bug的前瞻性實現...

+1

On p。 76,他沒有反對使用否定字符類('[^ ...]')。事實上,他稱他們爲「便利」。 –

+0

@ O.R.Mapper有趣。事實上,這個答案缺乏資源。我希望有一天我會再次觀看克羅克福德的視頻,並將其引用到解釋糟糕部分的時刻。我想知道我們是否可以通過https://plus.google.com/u/0/+DouglasCrockfordEsq/posts援引他就此問題進行合作 –