asp下正则实现URL自动链接的一个函数

时间:2022-01-09 13:42:33
  1. Function AutoLinkURLs(strString)    
  2.     Dim match, matches, offset, url, email, link, relnkAutoLinkURL    
  3.     relnkAutoLinkURL = "<a href=""[[%URL%]]"">[[%URLText%]]</a>"    
  4.     If Not IsObject(regExp) Then Set regExp = New RegExp    
  5.     regExp.Global = True    
  6.     regExp.IgnoreCase = True    
  7.     'Look for URLs    
  8.     regExp.Pattern = "(((ht|f)tps?://)|(www\.))([\w-]+\.)+[\w-:]+(/[\w- ./?%#;&=]*)?"    
  9.     Set matches = regExp.Execute(strString)    
  10.     offset = 0    
  11.     For Each match in matches    
  12.         url = match    
  13.         If Left(url, 4) = "www." Then url = "http://" & url    
  14.         link = Replace(Replace(relnkAutoLinkURL, "[[%URLText%]]", match), "[[%URL%]]", url)    
  15.         strString = Mid(strString, 1, match.FirstIndex + offset) & link & Mid(strString, match.FirstIndex + 1 + match.Length + offset, Len(strString))    
  16.         offset = offset + Len(link) - Len(match)    
  17.     Next    
  18.     'Look for emails    
  19.     regExp.Pattern = "[A-Za-z0-9_+-.']+@\w+([-.]\w+)*\.\w+([-.]\w+)*"    
  20.     Set matches = regExp.Execute(strString)    
  21.     offset = 0    
  22.     For Each match in matches    
  23.         email = match    
  24.         link = Replace(Replace(relnkAutoLinkURL, "[[%URLText%]]", match), "[[%URL%]]""mailto:" & email)    
  25.         strString = Mid(strString, 1, match.FirstIndex + offset) & link & Mid(strString, match.FirstIndex + 1 + match.Length + offset, Len(strString))    
  26.         offset = offset + Len(link) - Len(match)    
  27.     Next    
  28.     AutoLinkURLs = strString    
  29. End Function