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

时间:2016-04-06 07:42:20

标签: javascript

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

我有一个名为< code>的Box ...< / code>我将编写JS代码。我懒得为我自己设置语法高亮的所有标签,所以我希望有一个功能为我做这个。

实施例: <物镜>这< / OBJ> .functionName(); < - obj标签将高亮显示"此"以特定的颜色。

但如果"this"没有被标记,就会发生这样的情况:

<标签>< /标签> 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;
}

1 个答案:

答案 0 :(得分:2)

使用此正则表达式:

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

它使用negative lookahead,因此只有this后面的</tab>才会匹配var regex = new RegExp(text + "(?!</" + tag + ">)"); 。您可以像这样使用它:

html = html.replace(regex, taggedText);

scripts": {
    "dev": "npm run dev | grep -v \"\\[\\d*\\]\""
}