Если вы действительно хотите сделать это простым регулярным выражением, вы можете использовать это:
document.body.innerHTML = document.body.innerHTML
.replace(/\bAB-(\w+)/g, '<a href="http://localhost/$1">$&</a>');
Однако имейте в виду, что простая замена строк в документе HTML всегда очень плохая идея.Представьте, что может быть, например, какое-то имя класса, например <div class="AB-123" id="abc">
.Такой подход сломал бы весь сайт.Не используйте его на сайтах, которые не находятся под вашим собственным контролем.
Вместо этого попробуйте анализировать только текстовые узлы.document
дает вам метод evaluate
для работы на определенных узлах.Вы также можете искать все текстовые узлы, например:
let nodes = document.evaluate('//text()[contains(.,"AB-")]', document,
null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
Это даст вам список узлов, которые могут быть повторены с помощью nodes.iterateNext()
.Недостатком является то, что синтаксический анализ для гипертекстов, таких как AB-<b>123</b>
, становится очень трудным.