javascript - js正則替換問題
問題描述
<!DOCTYPE html><html><head> <title>內(nèi)容</title></head><body>中文<p>內(nèi)容<i>內(nèi)容</i></p></body></html>
將標簽里面的內(nèi)容替換為
<!DOCTYPE html><html><head> <title>{{#內(nèi)容#}}</title></head><body>{{#中文#}}<p>{{#內(nèi)容#}}<i>{{#內(nèi)容#}}</i></p></body></html>
求解正則該怎么寫?
問題解答
回答1:第一,學過編譯原理的話,你就會知道,正則是沒有能力處理嵌套的數(shù)據(jù)結(jié)構(gòu)的。也就是說,你想通過正則實現(xiàn)【選中 body 中嵌套的 p 的第一個 i 標簽】這樣的需求,在原理上是行不通的。
第二,你要處理的是一個結(jié)構(gòu)化的 DOM 文本,因此可以使用 jQuery 的 parseHTML 方法來實現(xiàn)。通過 jQuery parse 后得到的對象是可以使用 $ 來進一步選擇 p 或 i 等節(jié)點的。這就能夠簡單有效地解決你的文本替換問題了。
如果你在 Node 服務端,那么 jQuery 換成 cheerio 即可。
回答2:如果只在當前你給的測試文本里你想做替換,因為情況比較簡單,所以只要寫個([u4e00-u9fa5]+)這樣的正則匹配用{{#$1#}}去替換就行
相關(guān)文章:
1. 視頻文件不能播放,怎么辦?2. 前端 - 誰來解釋下這兩個 CSS selector 區(qū)別3. javascript - 求幫助 , ATOM不顯示界面!!!!4. javascript - ios返回不執(zhí)行js怎么解決?5. python - 爬蟲模擬登錄后,爬取csdn后臺文章列表遇到的問題6. html5 - HTML代碼中的文字亂碼是怎么回事?7. python bottle跑起來以后,定時執(zhí)行的任務為什么每次都重復(多)執(zhí)行一次?8. mysql - 分庫分表、分區(qū)、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處9. javascript - vue2如何獲取v-model變量名10. javascript - angular使從elastichearch中取出的文本高亮顯示,如圖所示
