2012-01-27 238 views
1

我正在写一个jQuery插件来突出显示我的网页上的C++代码。我对RegEx并不太满意,所以我无法弄清楚如何突出显示关键字(如'if','case','void'等)而不突出显示部分文字(如'int' '涂料')。我改变了一下,但有些东西仍然没有被突出显示。这是我的正则表达式是什么样子:JavaScript正则表达式语法高亮

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

这又通过每一个我想强调的关键字,存储在一个数组,那里有与另一种颜色的阵列(防爆ParserKeywordsArr [0]是无效的,ParserColorsArr [ 0]是蓝色的,所以它会以蓝色突出显示)。但是,当我把这样的东西:

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

返回得到突出显示,但无效不。我不知道如何告诉RegEx“如果它的第一个单词就行了,它匹配一个关键词,高亮它”

+2

你需要在这个项目中使用正则表达式... – Jivings 2012-01-27 22:00:00

回答

2

我会建议在寻找的Alex Gorbatchev's SyntaxHighlighter源,它不被其他语言中的方式彰显C++。我想你也会发现RegexPal有助于测试它们。

+0

我会研究这些。我只是用记事本进行测试,但我相信JavaScript有不同的语法。 – smoth190 2012-01-28 01:30:37

1

\b是一个词的符号。

/in/.test('loading'); // => true 
/\bin\b/.test('loading'); // => false 
/\bin\b/.test('load.in.g'); // => true