Как найти текст игнорируя теги?

Есть строка:
const faq = "<p><ul>\n<li>•  Download the App from <a href=\"https://itunes.apple.com/US/app?mt=8%29\" target=\"_blank\">AppStore</a> or <a href=\"https://play.google.com/store/apps/details?id=\" target=\"_blank\">Google Store</a></li>\n                        <li>•  Issue a virtual card within the app</li></ul>.</p>"

Мне нужно найти и заменить например все "app", игнорируя теги включая их атрибуты, но не текст внутри тегов, текущий вариант:
new RegExp(`(?!<a[^>]*?>)(${searchText})(?![^<]*?</a>)`, 'gi')

Ищет, но игнорирует текст внутри ссылок
  • Вопрос задан
  • 285 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Раз у вас javascript, сам бог велел использовать рекурсивный обход DOM, чтобы решить эту задачу нормально. Тогда не нужно будет вообще думать о тегах и их атрибутах. Регулярные выражения нужно использовать там, где текст имеет чёткую заранее известную структуру, это не про произвольный html.

Код очень простой и понятный: https://jsfiddle.net/alexey_m_ukolov/nfah953z/7/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы