Пересмотр шаблона является хорошим решением в таком случае.
Как альтернатива;
Метод Replace объекта RegExp имеет функцию обратного вызова, которую можно использовать в качестве альтернативы ревизии шаблона.
Иногда для обработки более сложных шаблонов может потребоваться функция обратного вызова.
Кроме того, я бы использовал шаблон типа \[url\]([^[]*)\[/url\]
вместо \[url\](.*)\[\/url]
.
Проверьте совпадения с помощью выражения, содержащего более одного bbcode, и вы поймете, почему я предлагаю.
' URL Replacement, www.Scirra.com
Function cb_CreateLink(sMatch, sGroup1, iMatchStartPos, sSubjectText)
cb_CreateLink = "<a href="""& Trim(sGroup1) &""" rel=""nofollow"">"& Trim(sGroup1) &"</a>"
End Function
Dim strMessage : strMessage = "[url] http://www.scirra.com[/url] [url] http://www.scirra.com[/url]"
Dim objRegExp : set objRegExp = new RegExp
With objRegExp
.Pattern = "\[url\]([^[]*)\[/url\]"
.IgnoreCase = True
.Global = True
End With
strMessage = objRegExp.replace(strMessage, GetRef("cb_CreateLink"))
set objRegExp = Nothing
Response.Write strMessage
Обратите внимание: Структура ссылочной функции может изменяться в зависимости от количества групп в шаблоне.
CallBackFunction ( Match string , [, Group1 string , Group2 string , ...], MatchStartPosition long , OriginalText string )