Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замена слова посредством JS (https://javascript.ru/forum/misc/57272-zamena-slova-posredstvom-js.html)

winrar2018 01.06.2022 17:36

Цитата:

Сообщение от рони (Сообщение 381794)
;)

<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script>
  window.onload =
      function() {
          var treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null, false),
              users = ["Вася", "Юра", "Маша", "Саша"],
              reg = new RegExp(users.join("|"), "ig");
          while (treeWalker.nextNode()) {
              var el = treeWalker.currentNode;
              el.data = el.data.replace(reg, "*****")
          }
      };
  </script>
</head>

<body>
Допустим есть массив слов: (ВАСЯ, ЮРА, МАША, САША)
<div>
    <a>Маша</a>
</div>
<ul>
    <li>Саша</li>
</ul>
<div>
    <a>Маша</a>
</div>
<ul>
    <li>Саша</li>
</ul>
</body>

</html>

Можно сделать так, чтобы этот скрипт срабатывал только при полном совпадении слов?

Сейчас, например, если слово "налог" нужно заменить на "123", и скрипт встречает слово "налог", то все работает нормально.
Но если попадется слово "Аналоги", то в нем произойдет частичная замена и получится "А123и", но это слово заменять не нужно...

рони 01.06.2022 17:48

winrar2018,
reg = new RegExp(`(^|[^а-я])(${users.join("|")})([^а-я]|$)`, "ig");

winrar2018 01.06.2022 18:30

рони, спасибо!


Часовой пояс GMT +3, время: 14:17.