javascript - js正則替換問題
問題描述
<!DOCTYPE html><html><head> <title>內(nèi)容</title></head><body>中文<p>內(nèi)容<i>內(nèi)容</i></p></body></html>
將標(biāo)簽里面的內(nèi)容替換為
<!DOCTYPE html><html><head> <title>{{#內(nèi)容#}}</title></head><body>{{#中文#}}<p>{{#內(nèi)容#}}<i>{{#內(nèi)容#}}</i></p></body></html>
求解正則該怎么寫?
問題解答
回答1:第一,學(xué)過編譯原理的話,你就會(huì)知道,正則是沒有能力處理嵌套的數(shù)據(jù)結(jié)構(gòu)的。也就是說,你想通過正則實(shí)現(xiàn)【選中 body 中嵌套的 p 的第一個(gè) i 標(biāo)簽】這樣的需求,在原理上是行不通的。
第二,你要處理的是一個(gè)結(jié)構(gòu)化的 DOM 文本,因此可以使用 jQuery 的 parseHTML 方法來實(shí)現(xiàn)。通過 jQuery parse 后得到的對(duì)象是可以使用 $ 來進(jìn)一步選擇 p 或 i 等節(jié)點(diǎn)的。這就能夠簡(jiǎn)單有效地解決你的文本替換問題了。
如果你在 Node 服務(wù)端,那么 jQuery 換成 cheerio 即可。
回答2:如果只在當(dāng)前你給的測(cè)試文本里你想做替換,因?yàn)榍闆r比較簡(jiǎn)單,所以只要寫個(gè)([u4e00-u9fa5]+)這樣的正則匹配用{{#$1#}}去替換就行
相關(guān)文章:
1. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問題2. PHP求助,求幫忙謝謝各位3. extra沒有加載出來4. mysql - php 如何網(wǎng)址中出現(xiàn)該頁標(biāo)題?5. javascript - 天貓首頁首屏數(shù)據(jù)來源6. javascript - 釘釘?shù)膃xcel, word文件預(yù)覽是直接用的微軟的office web app,不犯法嗎?7. 關(guān)于Mysql數(shù)據(jù)表行轉(zhuǎn)列8. django進(jìn)行數(shù)據(jù)庫(kù)的查詢9. 求救一下,用新版的phpstudy,數(shù)據(jù)庫(kù)過段時(shí)間會(huì)消失是什么情況?10. mysql - 為什么where條件中or加索引不起作用?
