Как подсветить текст, после его вывода из input

Всем привет

Подскажите, пожалуйста, как подсветить текст выведенный из инпута на страницу по нажатию кнопки. К примеру, выделить желтым если текст более 1го символа и выделить красным слова со спецсимволами ($#@ и т.д.)?

document.querySelector("button").onclick = myClick;

function myClick() {
    let a = document.querySelector(".myInput").value;
    document.querySelector(".textOutput").innerHTML = a;
    document.querySelector(".myInput").value = '';
}

Ответы (1 шт):

Автор решения: Ein

document.querySelector("button").onclick = myClick;

function myClick() {
    let a = document.querySelector(".myInput").value;
    document.querySelector(".textOutput").innerHTML = prepare(a);
    document.querySelector(".myInput").value = '';
}

function prepare(text){

  return text
    // разделяем текст на слова
    .split(' ')
    .map(word => {
      // ничего не делаем если попался множественный пробел 
      if(word.length === 0)
        return word;
        
      let classes = [];
      // проверяем слово на спецсимволы
      if(word.match(/[^A-Za-zА-Яа-я0-9]/))
        // выдаём соответсвующий класс
        classes.push('special-chars');
      
      // теперь на числа
      if(word.match(/[0-9]/))
        classes.push('numbers');
      
      // и на всякий случай на длину
      if(word.length === 1)
        classes.push('one-chr');
      
      // делаем обёртку, к которой сможем применить стили
      classes = classes.join(' ');
      return `<span class="${classes}">${word}</span>`
    }).join(' ');

}
.numbers{
  color:red;
}

.special-chars{
  text-decoration: line-through;
}

.one-chr{
  text-decoration: underline;
}
<input class="myInput" value="s0me test  val#e a">
<button>button</button>
<div class="textOutput"></div>

→ Ссылка