繁体   English   中英

RegEx仅匹配前后没有特定单词的单词

[英]RegEx match only words with no specific words before and after

我目前正在用Javascript写一个函数来标记特定的单词。

我有一个叫做<code> ... </ code>的盒子,我将在其中编写JS代码。 我懒惰地自己设置所有标记以突出显示语法,因此我想拥有一个为我执行此功能的函数。

示例:<obj> this </ obj> .functionName(); <-obj标签将以特定颜色突出显示“ this”。

但是,如果"this"没有被标记并且像这样发生:

<tab> </ tab> this.functionName() ;

我想标记它,但不是已经标记的"this"

这是我的JS代码:

function hightLight(text, tag, html) {
   var taggedText = ("<" + tag + ">" + text + "</" + tag + ">");
   var oldHTML = "";
   do {
       oldHTML = html;
       html = html.replace(text, taggedText);
   } while(html.localeCompare(oldHTML) != 0);//stop if nothing changed
   return html;
}

使用此正则表达式:

/this(?!<\/tab>)/

它采用负先行所以它仅匹配this当后面没有它</tab> 您可以这样使用它:

var regex = new RegExp(text + "(?!</" + tag + ">)");

html = html.replace(regex, taggedText);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM