正则表达式替换html标签之外的文本

我有这个HTML:

"This is simple html text <span class='simple'>simple simple text text</span> text"

我只需要匹配任何HTML标记之外的单词。我的意思是,如果我想匹配“简单”和“文本”,则只能从“这是简单的html文本”和最后一部分“文本”中获得结果-

结果将是“简单” 1匹配,“文本” 2火柴。有人可以帮我吗?我正在使用jQuery。

var pattern = new RegExp("(\\b" + value + "\\b)", 'gi');

if (pattern.test(text)) {

text = text.replace(pattern, "<span class='notranslate'>$1</span>");

}

  • value 是我要匹配的单词(在这种情况下为“简单”)
  • text"This is simple html text <span class='simple'>simple simple text text</span> text"

我需要用来包装所有选定的单词(在此示例中为“简单”)<span>。但是我只想包装 任何 HTML标记之外的单词。这个例子的结果应该是

This is <span class='notranslate'>simple</span> html <span class='notranslate'>text</span> <span class='simple'>simple simple text text</span> <span class='notranslate'>text</span>

我不想替换任何文字

<span class='simple'>simple simple text text</span>

它应与更换前的相同。

回答:

好的,尝试使用此正则表达式

(text|simple)(?![^<]*>|[^<>]*</)

分解:

(         # Open capture group

text # Match 'text'

| # Or

simple # Match 'simple'

) # End capture group

(?! # Negative lookahead start (will cause match to fail if contents match)

[^<]* # Any number of non-'<' characters

> # A > character

| # Or

[^<>]* # Any number of non-'<' and non-'>' characters

</ # The characters < and /

) # End negative lookahead.

负前瞻会阻止匹配,如果text还是simple是HTML标记之间。

以上是 正则表达式替换html标签之外的文本 的全部内容, 来源链接: utcz.com/qa/420907.html

回到顶部