регулярное выражение javascript с нечувствительным к регистру флагом 'i' и глобальный режим работы не работают - PullRequest
0 голосов
/ 27 марта 2019

Я работаю над методом, чтобы выделить текст запроса, найденный в строке, идея состоит в том, чтобы добавить жирный маркер к каждому найденному вхождению. проблема в том, что когда я пытаюсь заменить все вхождения текста запроса на g, и я отмечаю, что он этого не делает, похоже, он игнорирует флаг i.

это функция:

highlight  =  function(text,q){
        if (text.indexOf(q) != -1) {
            text = text.replace(new RegExp("\\b".concat(q, "\\b"), 'gi'), '<b>' + q + '</b>');
          } else{
            q = q.split(' ');
            q.forEach(function (item) {
              if (text.indexOf(item) != -1) text = text.replace(new RegExp("\\b".concat(item, "\\b"), 'gi'), '<b>' + item + '</b>');
            });
          }
             return text;
    }

не стесняйтесь проверить его, ниже приведен пример буксировки, с которым я тестировал:

highlight(' is THIS this','this') => is <b>this</b> <b>this</b>. это работает!

highlight(' is THIS','this') => is THIS. Нет

1 Ответ

1 голос
/ 27 марта 2019

Попробуйте что-то вроде этого:

highlight = function(text, q) {
  return text.replace(new RegExp("\\b" + q + "\\b", 'gi'),
                      function(x) {
                        return '<b>' + x + '</b>';
                      });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...