.replace() редактируемое отрицательное регулярное выражение

#javascript #typescript #replace #contenteditable

#javascript #машинописный текст #заменить #редактируемое содержимое

Вопрос:

Я пытаюсь заменить слова в моем contenteditable, если они не являются словами «образец» или «тест». Если это не те слова, я хочу покрасить их синим цветом в моем текстовом поле contenteditable. Прямо сейчас регулярное выражение соответствует всему и окрашивает все в синий цвет. Он работает с регулярными выражениями, перед которыми нет отрицания или негативного прогноза. Есть идеи? Пожалуйста, любые советы или предложения о том, как этого добиться, помогли бы.

  if(e.keyCode == 32){ 
    var text2 = document.getElementById("editor");
    var text = document.getElementById("editor").innerHTML;
    let regexp = /^(?:(?!b(sample|test)).)*$/g
    var newText = text.replace(regexp, function(g){
      return "<span class='colorblue'>" g "</span>";
    });
    document.getElementById("editor").innerHTML = newText;
    var elem = document.getElementById('editor2');
    this.caretAtEnd(text2);
    
}         
  

Комментарии:

1. Я думаю, было бы более эффективно (не говоря уже о более простом регулярном выражении) сделать все это синим, а затем заменить «образец» и «тест» другим цветом.

2. да, я согласен. Я создаю текстовое поле и пытаюсь сделать его таким, чтобы «ошибки» в этом примере были выделены синим цветом. Итак, если я делаю это синим цветом по умолчанию, это выглядит странно, потому что при вводе текста он всегда синий

3. Вы могли бы делать это по одному слову за раз, сначала разделяя на границе, и если вы хотите, чтобы оно было динамичным, просто проверьте keyup.