Если вы попытаетесь выделить жирным шрифтом текст «Test», то в самом конце цикла for в replaceArray replaceString будет иметь значение dsaf <</i> b>
Это происходит потому, что на последнем шаге цикла косая черта в Test совпадает с регулярным выражением / [/ I] / g, поскольку скобки в регулярных выражениях указывают классы символов. Вместо того, чтобы искать «[/ I]» в строке, регулярное выражение фактически ищет косую черту или символ I.
Наконец, при вставке в выходной div браузер автоматически закрывает первый тег жирным шрифтом и опускает закрывающий тег курсива, оставляя в конце то, что кажется лишним жирным тегом.
Удаление скобок в «[/ I]» должно исправить вашу проблему или, что еще лучше, изменить ее на «{/ I}», чтобы избежать этой проблемы и соответствовать тому, как реализован жирный шрифт.
Для получения дополнительной информации о классах символов регулярных выражений см. http://www.regular -expressions.info / charclass.html
И последнее: функциональная глава eloquent javascript (http://eloquentjavascript.net/chapter6.html)) очень хорошо объясняет один из лучших способов анализа и генерации разметки.