Отрицание обратной ссылки FQDN в HTML HREF

Для контекста я пытаюсь вызвать в тегах HREF html, где полное доменное имя ссылки HREF не совпадает с полным доменным именем цели HREF. Это предполагает, что целью, которая отображается для зрителя, является URL-адрес HTTP или HTTPS.

Мое регулярное выражение очень близко... ОЧЕНЬ близко. На самом деле он совпадает с противоположным, где совпадают полные доменные имена. За исключением того, что с тегом изображения внутри него, это правильно.

Ссылка на Regex101: https://regex101.com/r/4do2iB/4

Regex: (?i)(<A HREF=\"https?\:\/\/)(.*?\.[a-z]+)(\"\>"|\">|\/.+>)((?!<IMG).?)(https?:\/\/)?(\2).*?<\/A>

Тестовые образцы, которые я не хочу запускать:

<A HREF="https://www.google.ca">https://www.google.ca</A>
<A HREF="https://www.google.ca">https://www.google.ca/</A>
<A HREF="http://www.google.ca/">http://www.google.ca</A>
<A HREF="https://www.google.ca/something/good.html">https://www.google.ca/something/different/good.html</A>
<A HREF="https://www.google.ca/something/good.html">www.google.ca/something/good.html</A>
<A HREF="https://www.google.com">www.google.com</A>
<A HREF="https://www.google.com"><IMG SRC=https://www.google.ca/picture.gif></A>

Тестовые образцы, которые я действительно хочу запустить:

<A HREF="https://www.google.com">www.google.ca</A>
<A HREF="http://www.google.com/">www.google.ca</A>
<A HREF="https://www.scam.ca">www.google.ca</A>
<A HREF="https://www.scam.ca/test/blahblahblah.html">https://www.google.ca</A>
<A HREF="https://www.google.scam.ca/test/blahblahblah.html">https://www.google.ca</A>
<A HREF="https://www.google.scam.very.long.domain.ca/test/blahblahblah.html">https://www.google.ca</A>
<A HREF="https://www.google.scam.very.long.domain.ca/test/blahblahblah.html">www.google.ca/totally/a/scam</A>

Чтобы опровергнуть выражение, я попытался изменить обратную ссылку. (\2) в (?<!2), Тем не менее, это был шаг в неправильном направлении, поскольку он полностью противоречил моей необходимости просто сопоставлять каждый контрольный пример. Я не могу найти какой-либо другой способ перевернуть совпадение, что означает, что я явно что-то запутал - однако это я не имею ни малейшего понятия.

0 ответов

Другие вопросы по тегам