我正在使用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”吗?
答案 0 :(得分:2)
尝试\b
(字边界)而不是非字char:
text = text.replace(/\b(throw|new|Error)\b/g,'<span class="syntax-reserved-word">$1</span>');