2012-01-27 20 views
1

私のWebページでC++コードを強調するjQueryプラグインを作成しています。私はRegExであまりにもいいとは言えないので、単語の一部を強調表示せずにキーワードを強調する方法(例えば、 'if'、 'case'、 'void'など)を理解することはできません'ペイント')。私は少し変更しましたが、まだ強調表示されていないものがあります。これは私の正規表現は次のようになります。JavaScript RegEx構文ハイライト

str = str.replace(new RegExp("([' ' || \t ||,|| \"\"])(" + ParserKeywordsArr[i] + ")", 'g'), "$1<span style='color:" + ParserColorsArr[i] + ";'>" + ParserKeywordsArr[i] + "</span>"); 

これは、配列に格納され、私が強調したいすべてのキーワード、を通過し、そして色(例ParserKeywordsArrと別の配列をtheresの[0]、ParserColorsArr無効です[。 0]は青ですので、青で強調表示されます)。しかし、私がこのようなものを置くとき:

void CCodeEditorCtrl::OnPaint(WPARAM wParam, LPARAM lParam) 
{ 
    return; 
} 

返されたが、強調表示されない。私はどのようにRegExに伝えるべきかわからない "その行の最初の単語がキーワードと一致するなら、それを強調表示する"

+2

このプロジェクトのためにRegexでうまくいく必要があります... – Jivings

答えて

2

私は他の言語の中で道のハイライトC++でいAlex Gorbatchev's SyntaxHighlighterのソース、見てお勧めします。私はあなたがそれらをテストするのに役立つRegexPalも見つけると思います。

+0

私はそれらを調べます。私はJavaScriptが異なる構文を持っていると信じていますが、私はテスト用にメモ帳を使っていました。 – smoth190

1

\bは単語区切りです。

/in/.test('loading'); // => true 
/\bin\b/.test('loading'); // => false 
/\bin\b/.test('load.in.g'); // => true 
関連する問題