#javascript #html #angular #regex
#javascript #HTML #угловой #регулярное выражение
Вопрос:
Я пытаюсь сопоставить URL-адреса, но исключаю те, которые находятся внутри <a>
<img>
тегов и .
/(?!(?!.<a)[^<].*</a>)([w_-] (?:(?:.[w_-] ) ))([w.,@?^=%amp;:/~ #-]*[w@?^=%amp;/~ #-])?/ig
Проблема в том, что он соответствует URL-адресу внутри <img>
, если его нет в <a>
теге
Например:
<a href="https://google.com" rel="noopener noreferrer" target="_blank">Google</a>
НЕ СООТВЕТСТВУЕТ (правильно)- google.com СОВПАДЕНИЕ (Правильное)
<a href="google.com" rel="noopener noreferrer" target="_blank"><img src="https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png"></a>
НЕ СООТВЕТСТВУЕТ (правильно)<p>https://google.com</p>
СОВПАДЕНИЕ (правильное)<img src="https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png">
СОВПАДЕНИЕ (НЕВЕРНО)
Что я должен добавить или удалить в свое регулярное выражение?
Комментарии:
1. Просто удалите ненужные элементы перед использованием регулярного выражения.
2. @Andreas Я просто хочу заменить URL-адреса, которые не находятся внутри тегов, но сохраняют остальные внутри тегов
3. (Проанализируйте строку) Возьмите элементы, удалите все, что не является текстовым узлом или не соответствует вашему регулярному выражению, замените текстовый узел на любой, который вы хотите, вместо URI/text -> готово