我正在尝试将纯文本格式设置为丰富的JavaScript文本,这是我所讨论的代码中突出显示 some 示例关键字的部分:
var sampleKeywords = '(function|var|throw|return|class)\s';
elem.innerHTML = elem.textContent.replace(new RegExp(sampleKeywords, 'g'), function(val) {
return `<mark>${val}</mark>`;
});
上面的代码突出显示了文本中出现的带有空格的任何示例关键字。
这是为了防止突出显示诸如function123
之类的输入。
话虽如此,我仍然想突出显示诸如function
之类的输入内容,但后面没有任何内容。
本质上,我想突出显示任何示例关键字,后跟一个空格,或者根本不突出任何内容。
如何在正则表达式模式中实现此目标?
注意:我知道我的代码存在明显的缺陷,例如突出显示带引号的文本或不突出显示每个可用的JavaScript关键字,但是上面提供的代码只是抽象 ;不完整。
答案 0 :(得分:2)
您的需求的字面翻译会产生(?=\s|$)
(“后跟空白或字符串结尾”)。
但是,您可以简单地将条件取反:(?!\S)
(“后跟非空格字符”)
您可能还想研究\b
(单词边界):\bfoo\b
匹配foo
而不是在单词字符(即字母,数字或{{1 }}。