首頁  >  問答  >  主體

javascript - js正規替換問題

<!DOCTYPE html>
<html>
<head>
    <title>内容</title>
</head>
<body>
中文
<p>内容<i>内容</i></p>
</body>
</html>

將標籤裡面的內容替換為

<!DOCTYPE html>
<html>
<head>
    <title>{{#内容#}}</title>
</head>
<body>
{{#中文#}}
<p>{{#内容#}}<i>{{#内容#}}</i></p>
</body>
</html>

求解正規怎麼寫?

高洛峰高洛峰2662 天前912

全部回覆(2)我來回復

  • PHP中文网

    PHP中文网2017-07-05 10:57:03

    第一,學過編譯原理的話,你就會知道,正規是沒有能力處理巢狀的資料結構的。也就是說,你想透過正規實現【選取 body 中嵌套的 p 的第一個 i 標籤】這樣的需求,在原理上是行不通的。

    第二,你要處理的是一個結構化的 DOM 文本,因此可以使用 jQuery 的 parseHTML 方法來實作。透過 jQuery parse 後得到的物件是可以使用 $ 來進一步選擇 p 或 i 等節點的。這就能夠簡單有效地解決你的文字替換問題了。

    如果你在 Node 服務端,那麼 jQuery 換成 cheerio 即可。

    回覆
    0
  • PHP中文网

    PHP中文网2017-07-05 10:57:03

    如果只在當前你給的測試文本裡你想做替換,因為情況比較簡單,所以只要寫個([u4e00-u9fa5]+)這樣的正則匹配用{{#$1#}}去替換就行

    回覆
    0
  • 取消回覆