使用RegEx用HTML标记包装多个单词

时间:2011-02-18 17:31:35

标签: javascript regex

我正在使用RegExp在一组可能很大的文本中快速替换。它正在做的是提供语法高亮的方法:

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,非单词或字符串结尾。所以在找到“^ throw”之后,搜索位置不会在“new”中的n处开始,这意味着它应该匹配“^ new”吗?

1 个答案:

答案 0 :(得分:2)

尝试\b(字边界)而不是非字char:

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