JSFiddle - React, Tailwind, and code Playground

by Kstein

HTML

<HTML>
	
	<BODY>
  
  водостока<br>
  папками<br>
  
  <br>
потоку<br>
руками

</BODY>

</HTML>

JavaScript

window.onload = function() {

  s = document.body.innerHTML;


  let regularBadWordsArrayWithExceptions = [

    'ток',
    'кам'
  ];


  let ExceptionsArray = [
    'поток',
    'рукам'

  ];



  for (let i = 0; i < regularBadWordsArrayWithExceptions.length; i++) {
    let regularBadWordWithExceptions = new RegExp(
      '\\B' + '[а-яА-Я]*' + regularBadWordsArrayWithExceptions[i] + '[а-яА-Я]*' + '\\B',
      'gi'
    );



    // Регулярное выражение для исключений

    for (let j = 0; j < regularBadWordsArrayWithExceptions.length; j++) {
      let regularException = new RegExp(

        ExceptionsArray[j],
        'gi'
      );


      // Если исключение содержится в слове


      if (regularException.test(regularBadWordWithExceptions)) {

        continue;

      } else {


        //  Если не содержится


        s = s.replace(regularBadWordWithExceptions, function(m) {


          let rbwWEFirstLetter = m[0];
          let rbwWELastLetter = m[m.length - 1];
          return m[0] + '*'.repeat(m.length - 2) + m[m.length - 1];


        })
      }



    };



  };

  // Main Exceptions cycle




  document.body.innerHTML = s;

};