我正在编写一个jQuery插件,以突出显示我的网页上的C ++代码。我对RegEx并不是很好,所以我无法弄清楚如何突出显示关键字(如'if','case','void'等)而不突出显示部分单词(如'int'中的'涂料')。我稍微改了一下,但有些事情仍然没有突出显示。这就是我的RegEx的样子:
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“如果它是该行的第一个单词,并且它与关键字匹配,请突出显示它”
答案 0 :(得分:2)
我建议查看Alex Gorbatchev's SyntaxHighlighter的来源,其中突出显示C ++和其他语言。我想你也会发现RegexPal对测试它们很有帮助。
答案 1 :(得分:1)
\b
是一个分词。
/in/.test('loading'); // => true
/\bin\b/.test('loading'); // => false
/\bin\b/.test('load.in.g'); // => true