加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 06:29:32 所属栏目:百科 来源:网络整理
导读:我有这个 HTML: "This is simple html text span class='simple'simple simple text text/span text" 我只需要匹配任何HTML标签之外的单词.我的意思是,如果我想匹配“简单”和“文本”,我应该只从“这是简单的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>");
}

值是我想要匹配的单词(在这种情况下是“简单”)
>文本是“这是简单的html文本< span class ='simple'>简单的简单文本文本< / span>文本”

我需要使用< 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)(?![^<]*>|[^<>]*</)

Example worked on regex101.

分解:

(         # 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.

如果文本或简单在html标签之间,负面的前瞻将阻止匹配.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读