Текст соответствия регулярному выражению, за которым следует пробел или вообще ничего - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь отформатировать обычный текст в расширенный текст JavaScript, и вот часть моего кода, которая выделяет некоторые примеры ключевых слов:

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 голосов
/ 29 января 2019

Буквальный перевод ваших требований приводит к (?=\s|$) ("с последующим пробелом или концом строки").

Однако вы можете просто инвертировать ваше условие: (?!\S) ("не сопровождаетсянепробельный символ ")

Вы также можете посмотреть \b (граница слова): \bfoo\b соответствует foo без предшествующего или после него символа слова (то есть буквы, цифры,или _).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...