2011-02-18 4 views
1

RegExpを使用して、潜在的に大きなテキストセットにすばやく置き換えます。それは何やっていることは構文強調表示のための手段を提供している:RegExpを使用して複数の単語をHTMLタグでラップする

var text = 'throw new Error("foo");'; 
text = text.replace(/(^|\W)(throw|new|Error)(\W|$)/g,'$1<span class="syntax-reserved-word">$2</span>$3'); 

問題があり、それは「スロー」と「エラー」を強調表示しますが、右側の「新規」をスキップ。私のRegExpは、文字列の始まりまたは終わりを指定し、throwまたはnewまたはError、non-wordまたはstringの終わりを指定します。だから、 "^ throw"が見つかったら、 "new"のnで検索位置が始まらないでしょう。つまり、 "^ new"と一致するはずです。

+0

[JS構文蛍光ペン]の多くがあります。 -syntax-highlighting-scripts /)を自由に利用できます。あなたは車輪を再構築してもよろしいですか? – NullUserException

+0

はい、これは私の個人用APIです。 – Justin

答えて

2

代わりに非ワード文字の(ワード境界)\bをお試しください:http://www.webdesignbooth.com/9-useful-javascript(

text = text.replace(/\b(throw|new|Error)\b/g,'<span class="syntax-reserved-word">$1</span>'); 
+0

Bah ..なぜ私はこれを考えなかったのですか?期待どおりに動作します、ありがとう! – Justin