2016-04-06 15 views
1

現在、特定の単語にタグを付ける関数をJavascriptで作成しています。RegExは前後に特定の単語のない単語のみを一致させます

私は<コード> ... </code>と呼ばれるボックスを持っていますが、私はJSコードを書いています。私は自分自身で構文の強調表示のためのすべてのタグを設定することを怠るため、私はそれを行うための機能を持っていたい。

例: < obj> this </obj> .functionName(); < - objタグは特定の色で "this"を強調表示します。

しかし"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; 
} 
+0

;'、あなたはthis' 'のみ最初のタグを付けたいですか? –

+0

タグを付けられていない "this"にはすべてタグを付けたい Sebastian

答えて

2

この正規表現を使用します。

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

それはそれは</tab>が続いていないときに、それが唯一thisに一致するnegative lookaheadを使用しています。あなたはこのようにそれを使用することができます。)あなたは ` を持っている場合は、この this.functionName(だから、

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

html = html.replace(regex, taggedText); 
+0

彼が何を望んでいるかわからない。 –

+0

@AdrienBrunelat彼が望むのは、 'this 'のすべてのものを' this 'に置き換えることです。 – afuous

+0

ああ、私はそれを得ていませんでした。これは問題の良い解決策です。うまくいきます。 –

関連する問題