0
我正在使用JavaScript編寫HTML編輯器,試圖實現撤消功能。與嵌套正則表達式不匹配
所以我有這樣的HTML代碼(隱藏註釋用於存儲應用程序狀態):
<!-- RECONSTRUCT: 'test1' -->
<h1>FOO</h1>
<!-- END RECONSTRUCT -->
<h1>BAR</h1>
<!-- RECONSTRUCT: 'test2' -->
<h1>FOOFOO</h1>
<!-- END RECONSTRUCT -->
,我需要轉換成HTML代碼:
test1
<h1>BAR</h1>
test2
所以基本上,HTML註釋「保存」我需要恢復代碼的舊狀態。
所以我希望有一個正則表達式來實現的是:
[0:"test1", 1:"<h1>FOO</h1>", 2:"test2", 3:"<h1>FOOFOO</h1>"]
或類似的東西。
的問題是,當我嘗試使用正則表達式是這樣的:
src.match(/<!-- RECONSTRUCT: '(.*)' -->(.*)<!-- RECONSTRUCT END -->/g)
我得到
[0: "<!-- RECONSTRUCT: 'test1' --> ... FOO ... BAR <!-- RECONSTRUCT ... FOOFOO ... ->"]
如此完整的輸入作爲一個結果,因爲它的有效匹配。
<!-- RECONSTRUCT: '(.*)' -->((?!RECONSTRUCT:).)*
你能幫我: 我也是不得到它與未來的負面看工作?
哇!感謝您的快速和驚人的輕鬆答案! 真的很感激它,並希望我可以給你一杯飲料。 – user1781595
快速問題:你的正則表達式如何解決「嵌套事件」 - 問題?爲什麼輸入不會被解釋爲像我的搜索結果中的單個(並且唯一)結果? – user1781595
當我嘗試你的'match'時,我得到'null'結果(這是正常的,因爲'。*'不會穿過換行符),所以我無法真正比較。另外,我沒有在你的示例中看到任何真正的嵌套事件。 *嵌套*意味着什麼? – trincot