簡體   English   中英

如何將不屬於標簽的文本包裝在標簽中?

[英]How to wrap text not part of a tag in a tag?

我想強調(與<mark )另一個字符串中搜索字符串,但它不應該是一個標簽的部分(即te<cite>不應該匹配,但tetest應該)。 我一直在使用這樣的代碼將匹配項替換為列出的第二個正則表達式,但是只能嵌套使用。

someElement.innerHTML.replace(regex, function(full, before, match, after) {
  return before + '<mark>' + match + '</mark>' + after;
});

我嘗試過的建議:

  • <\\/\\w*>(\\w*\\s*)*(te)(\\w*\\s*)*<([az]*\\s*\\w*="\\w*")*> (根本不匹配?)
  • (<.+?>[^<>]*?.*)(te)(.*[^<>]*?<.+?>) (僅適用於嵌套標記)
  • ((<.+?>[^<>]*?)?.*)(te)(.*([^<>]*?<.+?>)?) (. .replace給出未定義的)

例:

要包裝的字符串: te

輸入文本:

‘This is a test string’
<cite> — some test wrapped too</cite>

預期產量:

‘This is a <mark>te</mark>st string’
<cite> — some <mark>te</mark>st wrapped too</cite>

我瀏覽了很多“重復項”,但是找不到確切的重復項,但是如果有人可以帶領我找到一個可行的示例,那也將很可愛,謝謝!

現在刪除的一個最適合我的答案是(te)(?![^<]*>) (通過revo)。 但是,如果下一個char是> ,則此方法不起作用,但是我將其視為未解決的邊緣情況。

正則表達式:

(te)(?!\w*>)

負前瞻檢查它是否在開始/結束標簽內,這是有益的。 (?!\\w*>)這將忽略任何te ,后跟任何單詞字符和> (這可能表示在標簽名稱之內。)

失敗情況:

如果輸入字符串中可能存在諸如test> (未配對)之類的字符串,即使它不是標簽,也不會匹配。

現場演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM