【问题标题】:JavaScript RegEx Syntax HighlightingJavaScript RegEx 语法高亮
【发布时间】:2012-01-27 21:55:22
【问题描述】:

我正在编写一个 jQuery 插件来突出显示我网页上的 C++ 代码。我不太擅长正则表达式,所以我不知道如何在不突出显示部分单词的情况下突出显示关键字(如“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;
}

Return 会突出显示,但 void 不会。我不知道如何告诉正则表达式“如果它是该行的第一个单词,并且它与关键字匹配,则突出显示它”

【问题讨论】:

  • 您需要在这个项目中熟练使用正则表达式...

标签: javascript regex


【解决方案1】:

我建议查看Alex Gorbatchev's SyntaxHighlighter 的源代码,顺便说一下,它在其他语言中突出显示了 C++。我想您还会发现 RegexPal 对测试它们很有帮助。

【讨论】:

  • 我会调查这些。我只是使用记事本进行测试,虽然我相信 JavaScript 有不同的语法。
【解决方案2】:

\b 是一个分词。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 2010-10-15
    • 1970-01-01
    相关资源
    最近更新 更多