正则表达式匹配文本,后跟空格或完全不显示

时间:2019-01-29 00:37:59

标签: javascript regex

我正在尝试将纯文本格式设置为丰富的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关键字,但是上面提供的代码只是抽象 ;不完整。

1 个答案:

答案 0 :(得分:2)

您的需求的字面翻译会产生(?=\s|$)(“后跟空白或字符串结尾”)。

但是,您可以简单地将条件取反:(?!\S)(“后跟非空格字符”)

您可能还想研究\b(单词边界):\bfoo\b匹配foo而不是在单词字符(即字母,数字或{{1 }}。