Я пытаюсь заменить URL-адреса, содержащиеся в блоке HTML-кода, которые пользователи публикуют в старом веб-приложении, с соответствующими привязками (<A>
) для этих URL-адресов.
Проблема в том, что URL-адреса могут быть уже «привязаны», что содержится в <A>
элементах. Эти URL не должны быть заменены.
Пример:
<a href="http://noreplace.com">http://noreplace.com</a> <- do not replace
<a href="http://noreplace.com"><u>http://noreplace.com</u></a> <- do not replace
<a href="...">...</a>http://replace.com <- replace
Как бы выглядело регулярное выражение, совпадающее только с «не привязанными URL»?
Я использую следующую функцию для замены на RegEx:
Function ReplaceRegExp(strString, strPattern, strReplace)
Dim RE: Set RE = New RegExp
With RE
.Pattern = strPattern
.IgnoreCase = True
.Global = True
ReplaceRegExp = .Replace(strString, strReplace)
End With
End Function
Следующее не жадное регулярное выражение используется для форматирования URL UBB. Можно ли адаптировать это регулярное выражение для соответствия только тем, которые мне нужны?
' the double doublequote in the brackets is because
' double doublequoting is ASP escaping for doublequotes
strString = ReplaceRegExp(strString, "\[URL=[""]?(http|ftp|https)(:\/\/[\w\-_]+)((\.[\w\-_]+)+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?[""]?\](.*?)\[/URL\]", "<a href=""$1$2$3$5"" target=""_blank"">$6</a>")
Если это не удастся сделать с помощью RegEx, каким было бы решение в ASP Classic, с некоторым кодом или псевдокодом, пожалуйста? Однако я действительно хотел бы сохранить код простым с помощью дополнительной строки регулярного выражения, чем добавлять дополнительные функции в этот старый код.
Спасибо за ваши усилия!