San*_*530 20 html regex replace
我有这个HTML:
"This is simple html text <span class='simple'>simple simple text text</span> text"
Run Code Online (Sandbox Code Playgroud)
我只需匹配任何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>");
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
我不想替换里面的任何文字
<span class='simple'>simple simple text text</span>
Run Code Online (Sandbox Code Playgroud)
它应该与更换前相同.
Jer*_*rry 68
好的,试试这个正则表达式:
(text|simple)(?![^<]*>|[^<>]*</)
Run Code Online (Sandbox Code Playgroud)
分解:
( # 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.
Run Code Online (Sandbox Code Playgroud)
如果text或simple在html标签之间,负向前瞻将阻止匹配.
| 归档时间: |
|
| 查看次数: |
17664 次 |
| 最近记录: |