Не сопоставлять с регулярным выражением в angular, если в начале и (или) конце есть какие-либо вложения, буквы, слова

Обновить вопрос;

Прежде всего привет всем, я здесь новенький, я очень постараюсь ответить на мой вопрос правильно.

как данные попали ко мне;

          0: {highWord: 'hafif ticari araçlarda', color: '#00FF00'}
    1: {highWord: 'hafif ticari', color: '#00FF00'}
    2: {highWord: 'kamyon', color: '#00FFFF'}
    3: {highWord: 'MAN', color: '#00FFFF'}
    4: {highWord: 'otobüs', color: '#00FFFF'}
    5: {highWord: 'AĞIR VASITA', color: '#00FFFF'}
    6: {highWord: 'ağır vasıta', color: '#00FFFF'}
    7: {highWord: 'Ağır vasıta', color: '#00FFFF'}
    8: {highWord: 'Ağır Vasıta', color: '#00FFFF'}

вот блок кода, где я сопоставляю свои слова;

       let searchRgx = new RegExp(this.highlightWordList.map(item => {
      console.log(item)
      return item.highWord;
    }).join("|"), 'gi');

это вывод, который этот код дает мне

      /hafif ticari araçlarda|hafif ticari|kamyon|MAN|otobüs|AĞIR VASITA|ağır vasıta|Ağır vasıta|Ağır Vasıta/gi

и я рисую совпадающее слово здесь, но оно соответствует неправильному

       let _this = this
  return txt.replace(searchRgx, function (match, offset, string)  {
     
      let foundedKeyword = _this.highlightWordList.filter(item => {
        return item.highWord.toLowerCase() === match.toLowerCase();
      })[0];

      if (foundedKeyword == undefined) {
        foundedKeyword = {};
        foundedKeyword.color = 'white';
      }


      return `<span style='background-color:${foundedKeyword.color};' >${match}</span>`;
    });

например: когда я пишу « lookman », мой код выше также соответствует « man » в слове «look man »

что я хочу, так это то, что когда я набираю «lookman» , это не соответствует «man» .

Надеюсь задал правильный вопрос (с правилами) заранее спасибо

1 ответ

Расширение комментария от Келли

Вы можете добавить границы слов\b. Обновление строки, в которой вы генерируете регулярное выражение

      let searchRgx = new RegExp(this.highlightWordList.map(item => {
    console.log(item)       
    return '\\b(' + item.highWord + ')\\b'; 
    // Another string formatting option:  `\\b(${item.highWord})\\b`    
}).join("|"), 'gi');
Другие вопросы по тегам