javascript - js正則替換問(wèn)題
問(wèn)題描述
<!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>
求解正則該怎么寫(xiě)?
問(wèn)題解答
回答1:第一,學(xué)過(guò)編譯原理的話,你就會(huì)知道,正則是沒(méi)有能力處理嵌套的數(shù)據(jù)結(jié)構(gòu)的。也就是說(shuō),你想通過(guò)正則實(shí)現(xiàn)【選中 body 中嵌套的 p 的第一個(gè) i 標(biāo)簽】這樣的需求,在原理上是行不通的。
第二,你要處理的是一個(gè)結(jié)構(gòu)化的 DOM 文本,因此可以使用 jQuery 的 parseHTML 方法來(lái)實(shí)現(xiàn)。通過(guò) jQuery parse 后得到的對(duì)象是可以使用 $ 來(lái)進(jìn)一步選擇 p 或 i 等節(jié)點(diǎn)的。這就能夠簡(jiǎn)單有效地解決你的文本替換問(wèn)題了。
如果你在 Node 服務(wù)端,那么 jQuery 換成 cheerio 即可。
回答2:如果只在當(dāng)前你給的測(cè)試文本里你想做替換,因?yàn)榍闆r比較簡(jiǎn)單,所以只要寫(xiě)個(gè)([u4e00-u9fa5]+)這樣的正則匹配用{{#$1#}}去替換就行
相關(guān)文章:
1. 在應(yīng)用配置文件 app.php 中找不到’route_check_cache’配置項(xiàng)2. html按鍵開(kāi)關(guān)如何提交我想需要的值到數(shù)據(jù)庫(kù)3. mysql取模分表與分表4. gvim - 誰(shuí)有vim里CSS的Indent文件, 能縮進(jìn)@media里面的5. HTML 5輸入框只能輸入漢字、字母、數(shù)字、標(biāo)點(diǎn)符號(hào)?正則如何寫(xiě)?6. dockerfile - 我用docker build的時(shí)候出現(xiàn)下邊問(wèn)題 麻煩幫我看一下7. 跟著課件一模一樣的操作使用tp6,出現(xiàn)了錯(cuò)誤8. PHP類(lèi)屬性聲明?9. objective-c - ios 怎么實(shí)現(xiàn)微信聯(lián)系列表 最好是swift10. javascript - 請(qǐng)教如何獲取百度貼吧新增的兩個(gè)加密參數(shù)
