当前位置: 首页 > 图文教程 > 网络编程 > 正则表达式 > 论坛UBB代码 推荐

正则表达式
[原创]正则匹配后面非指定字符的正则
一个关于正则表达式的问题
代替正则:HyperScriptExpression联合开发倡议公告
[原创]正则替换字符串功能
[原创]java 正则表达式基础,实例学习资料收集大全
web标准知识:丰富段落里的标签
js判断是否有6个连续数字的字符串的正则
正则表达式中的反向预搜索实现
精通 JavaScript中的正则表达式手机整理 推荐
取图片路径的正则
UBB 转换函数演示 (经典论坛)
pjblog的ubbcodeasp文件
PBlog2 公用JS代码
用的ubb转换
密码强度检测函数(正则)
正则表达式工具 Match Tracer
编写采集规则的好帮手—RegexBuddy 下载,正则不再难
正则表达式30分钟入门教程 v2.1版
asp 图片正则 替换,替换前检查图片是不是本地地址的方法
正则表达式口诀 正则表达式学习工具

正则表达式 中的 论坛UBB代码 推荐


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 38 ::
收藏到网摘: n/a

复制代码 代码如下:

<%
dim param,smiles 'param是UBB标签完全可用的标记 param=full 则完全可用,否则不支持一些占位大的标签 smiles是禁止笑脸转换
function UBBCode(content)
dim n,i
'on error resume next
set re=new regexp
re.IgnoreCase=true
re.global=true

re.pattern="\[code\](\r\n)?([\s\S]+?)\[\/code\]"
Set Matches = re.Execute(content)
dim code()
n=0
if re.test(content) then codeb=true
if codeb then
For Each Match in Matches
redim Preserve code(n)
code(n) =Match.Value
n=n+1
Next
for i=0 to ubound(code)
if code(i)="" then exit for
content=replace(content,code(i),"{code"&i&"}")
next
end if

if param="full" then
re.pattern="\[html\](\r\n)?([\s\S]+?)\[\/html\]"
Set Matches = re.Execute(content)
dim html()
n=0
if re.test(content) then htmlb=true
if htmlb then
For Each Match in Matches
redim Preserve html(n)
html(n) =Match.Value
n=n+1
Next
for i=0 to ubound(html)
if html(i)="" then exit for
content=replace(content,html(i),"{html"&i&"}")
next
end if
end if
content=gmt(content) 'ubb


if codeb then
for i=0 to ubound(code)
if code(i)="" then exit for
tcode=server.htmlencode(code(i))
content=replace(content,"{code"&i&"}",tcode)
next
end if
'-----处理[code] 中的[html]
re.pattern="\[html\](\r\n)?([\s\S]+?)\[\/html\]"
Set Matches = re.Execute(content) ' Execute search.
dim html2()
n=0
if re.test(content) then html2b=true
if html2b then
For Each Match in Matches ' Iterate Matches collection.
redim Preserve html2(n)
html2(n) =Match.Value
n=n+1
Next
for i=0 to ubound(html2)
if html2(i)="" then exit for
content=replace(content,html2(i),"{html2"&i&"}")
next
end if

if param="full" then
if htmlb then
for i=0 to ubound(html)
if html(i)="" then exit for
thtml=server.htmlencode(html(i))
content=replace(content,"{html"&i&"}",thtml)
next
end if
end if

re.Pattern="(\[code\])(\r\n)?([\s\S]+?)(\[\/code\])"
content=re.Replace(content,"<PRE class=CodeSamp>$3</PRE>")

if param="full" then
re.Pattern="(\[html\])(\r\n)?([\s\S]+?)(\[\/html\])"
content=re.Replace(content,"<span><TEXTAREA cols=95 rows=12>$3</TEXTAREA><br><INPUT onclick=runCode() type=button value=运行代码> <input onclick=copyCode() type=button value=复制代码>[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]</span>")
end if

if html2b then
for i=0 to ubound(html2)
if html2(i)="" then exit for
thtml2=html2(i)
content=replace(content,"{html2"&i&"}",thtml2)
next
end if

UBBCode=content
end function


function gmt(strContent)

strContent=HTMLfilter(strContent)

dim re
Set re=new RegExp
re.IgnoreCase =true
re.Global=True


if param="full" then
if not smiles then '笑脸转换

re.Pattern="(\[em(\d{1,2})\])"
strContent=re.Replace(strContent,"<img src=images/em$2.gif border=0 align=middle>")

're.Pattern=":\)"
'strContent=re.Replace(strContent,"<img src=images/smile.gif border=0 align=middle>")
're.Pattern=":\("
'strContent=re.Replace(strContent,"<img src=images/frown.gif border=0 align=middle>")
're.Pattern=":o"
'strContent=re.Replace(strContent,"<img src=images/redface.gif border=0 align=middle>")
're.Pattern=":D"
'strContent=re.Replace(strContent,"<img src=images/biggrin.gif border=0 align=middle>")
're.Pattern=";\)"
'strContent=re.Replace(strContent,"<img src=images/wink.gif border=0 align=middle>")
're.Pattern=":p"
'strContent=re.Replace(strContent,"<img src=images/tongue.gif border=0 align=middle>")
're.Pattern=":cool:"
'strContent=re.Replace(strContent,"<img src=images/cool.gif border=0 align=middle>")
're.Pattern=":rolleyes:"
'strContent=re.Replace(strContent,"<img src=images/rolleyes.gif border=0 align=middle>")
're.Pattern=":mad:"
'strContent=re.Replace(strContent,"<img src=images/mad.gif border=0 align=middle>")
're.Pattern=":eek:"
'strContent=re.Replace(strContent,"<img src=images/eek.gif border=0 align=middle>")
're.Pattern=":confused:"
'strContent=re.Replace(strContent,"<img src=images/confused.gif border=0 align=middle>")
're.Pattern=":cry:"
'strContent=re.Replace(strContent,"<img src=images/cry.gif border=0 align=middle>")

end if

re.Pattern="(\[IMG\])(.*?)(\[\/IMG\])"
strContent=re.Replace(strContent,"<a href=$2 target=_blank><IMG SRC=""$2"" border=0 alt=按此在新窗口浏览图片 onload=""javascript:if(this.width>document.body.clientWidth-300) {this.height=(document.body.clientWidth-300)*this.height/this.width;this.width=document.body.clientWidth-300}"" galleryImg=no></a>")

're.Pattern="\[DIR=*([0-9]*),*([0-9]*)\](.*?)\[\/DIR]"
'strContent=re.Replace(strContent,"<object classid=clsid:166B1BCA-3F9C-11CF-8075-444553540000 codebase=http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=7,0,2,0 width=$1 height=$2><param name=src value=$3><embed src=$3 pluginspage=http://www.macromedia.com/shockwave/download/ width=$1 height=$2></embed></object>")
're.Pattern="\[QT=*([0-9]*),*([0-9]*)\](.*?)\[\/QT]"
'strContent=re.Replace(strContent,"<embed src=$3 width=$1 height=$2 autoplay=true loop=false controller=true playeveryframe=false cache=false scale=TOFIT bgcolor=#000000 kioskmode=false targetcache=false pluginspage=http://www.apple.com/quicktime/>")
re.Pattern="\[MP=(\d+),(\d+)\](.*?)\[\/MP]"
strContent=re.Replace(strContent,"<object align=middle classid=CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95 class=OBJECT id=MediaPlayer width=$1 height=$2 ><param name=ShowStatusBar value=-1><param name=playCount value=10><param name=Filename value=""$3""><embed type=application/x-oleobject codebase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701 flename=mp src=""$3"" playCount=10 width=$1 height=$2></embed></object>")

'mp3
re.Pattern="\[MP3](.*?)\[\/MP3]"
strContent=re.Replace(strContent,"<object align=middle classid=CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95 class=OBJECT id=MediaPlayer width=300 height=180 ><param name=ShowStatusBar value=-1><param name=playCount value=10><param name=Filename value=""$1""><embed type=application/x-oleobject codebase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701 flename=mp src=""$1"" playCount=10 width=300 height=180></embed></object>")


re.Pattern="\[RM=(\d+),(\d+)\](.*?)\[\/RM]"
strContent=re.Replace(strContent,"<OBJECT classid=clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA class=OBJECT id=RAOCX width=$1 height=$2><PARAM NAME=SRC VALUE=""$3""><PARAM NAME=CONSOLE VALUE=Clip1><PARAM NAME=CONTROLS VALUE=imagewindow><PARAM NAME=AUTOSTART VALUE=true></OBJECT><br><OBJECT classid=CLSID:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA height=32 id=video2 width=$1><PARAM NAME=SRC VALUE=""$3""><PARAM NAME=AUTOSTART VALUE=-1><PARAM NAME=CONTROLS VALUE=controlpanel><PARAM NAME=CONSOLE VALUE=Clip1></OBJECT>")

re.Pattern="(\[FLASH\])(.*?)(\[\/FLASH\])"
strContent= re.Replace(strContent,"<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=500 height=400><PARAM NAME=movie VALUE=""$2""><PARAM NAME=quality VALUE=high><embed src=""$2"" quality=high pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width=500 height=400>$2</embed></OBJECT>")
re.Pattern="(\[FLASH=(\d+),(\d+)\])(.*?)(\[\/FLASH\])"
strContent= re.Replace(strContent,"<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=$2 height=$3><PARAM NAME=movie VALUE=""$4""><PARAM NAME=quality VALUE=high><param name=menu value=false><embed src=""$4"" quality=high menu=false pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width=$2 height=$3>$4</embed></OBJECT>")


'循环转换quote
re.Pattern="(\[QUOTE\])(.*?)(\[\/QUOTE\])"
while re.test(strContent)
strContent=re.Replace(strContent,"<blockquote>引用:<hr class=bordercolor><span>$2</span><hr class=bordercolor></blockquote>")
wend

re.Pattern="(\[w\])(.*?)(\[\/w\])"
strContent=re.Replace(strContent,"<IFRAME FRAMEBORDER=1 ALIGN=CENTER width=100% HEIGHT=400 SCROLLING=YES SRC=$2></iframe><br>页面:<A HREF=$2 target=_blank>点这儿参观</A>")

end if '大空间标签

re.Pattern="(\[ATTACHMENT=(.*?)\])(.*?)(\[\/ATTACHMENT\])"
strContent= re.Replace(strContent,"<p><img src=images/attachment.gif> <a href=""$2"" TARGET=_blank title=""提示:"&chr(13)&"您可以单击右键另存为把该文件下载到本地机器"">$3</a><p>")

re.Pattern="(\[URL\])(.*?)(\[\/URL\])"
strContent= re.Replace(strContent,"<A HREF=""$2"" TARGET=_blank>$2</A>")
re.Pattern="(\[URL=(http|https|ftp|rtsp|mms)(:\/\/)(.*?)\])(.*?)(\[\/URL\])"
strContent= re.Replace(strContent,"<A HREF=""$2$3$4"" TARGET=_blank>$5</A>")

re.Pattern="(\[EMAIL\])(.*?)(\[\/EMAIL\])"
strContent= re.Replace(strContent,"<A HREF=""mailto:$2"">$2</A>")
re.Pattern="(\[EMAIL=(.*?)\])(.*?)(\[\/EMAIL\])"
strContent= re.Replace(strContent,"<A HREF=""mailto:$2"" TARGET=_blank>$3</A>")

re.Pattern = "(^|\s|<br>|<p>)(http|https|ftp|rtsp|mms)(:\/\/)(\S+)"
strContent = re.Replace(strContent,"$1<a target=_blank href=$2$3$4>$4</a>")
re.Pattern = "(^|\s|<br>|<p>)(www.)(\S+)"
strContent = re.Replace(strContent,"$1<a target=_blank href=http://$2$3>$2$3</a>")

'文本效果
re.Pattern="(\[list\])(.+?)(\[\/list\])"
strContent=re.Replace(strContent,"<UL TYPE=SQUARE>$2</UL>")
re.Pattern="(\[list=)(A|1)(\])(.+?)(\[\/list\])"
strContent=re.Replace(strContent,"<OL TYPE=$2>$4</OL>")
re.Pattern="(\[\*\])"
strContent=re.Replace(strContent,"<LI>")

re.Pattern="(\[color=(.*?)\])(.*?)(\[\/color\])"
strContent=re.Replace(strContent,"<font color=$2>$3</font>")
re.Pattern="(\[#(.{6}?)\])(.*?)(\[\/#\])"
strContent=re.Replace(strContent,"<font color=#$2>$3</font>")
re.Pattern="(\[font=(.*?)\])(.*?)(\[\/font\])"
strContent=re.Replace(strContent,"<font face=$2>$3</font>")
re.Pattern="(\[align=(left|center|right)\])(.*?)(\[\/align\])"
strContent=re.Replace(strContent,"<div align=$2>$3</div>")

re.Pattern="(\[fly\])(.*?)(\[\/fly\])"
strContent=re.Replace(strContent,"<marquee width=90% behavior=alternate scrollamount=3>$2</marquee>")
re.Pattern="(\[move\])(.*?)(\[\/move\])"
strContent=re.Replace(strContent,"<MARQUEE scrollamount=3>$2</marquee>")
re.Pattern="\[GLOW=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.*?)\[\/GLOW]"
strContent=re.Replace(strContent,"<table width=$1 style=""filter:glow(color=$2, strength=$3)"">$4</table>")
re.Pattern="\[SHADOW=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.*?)\[\/SHADOW]"
strContent=re.Replace(strContent,"<table width=$1 style=""filter:shadow(color=$2, strength=$3)"">$4</table>")

re.Pattern="(\[i\])(.*?)(\[\/i\])"
strContent=re.Replace(strContent,"<i>$2</i>")
re.Pattern="(\[u\])(.*?)(\[\/u\])"
strContent=re.Replace(strContent,"<u>$2</u>")
re.Pattern="(\[b\])(.*?)(\[\/b\])"
strContent=re.Replace(strContent,"<b>$2</b>")
re.Pattern="(\[sup\])(.*?)(\[\/sup\])"
strContent=re.Replace(strContent,"<sup>$2</sup>")
re.Pattern="(\[sub\])(.*?)(\[\/sub\])"
strContent=re.Replace(strContent,"<sub>$2</sub>")

re.Pattern="\[size=([+|-]?[0-7])\](.*?)(\[\/size\])"
strContent=re.Replace(strContent,"<font size=$1>$2</font>")

re.Pattern="(\[center\])(.*?)(\[\/center\])"
strContent=re.Replace(strContent,"<center>$2</center>")

set re=Nothing

gmt=strContent
end function


Rem 过滤HTML代码
function HTMLfilter(fString)
if not isnull(fString) then
fString=server.htmlencode(fString)
fString = Replace(fString, CHR(9), " ") 'Tab
' fString = Replace(fString, CHR(34), """) '"
' fString = Replace(fString, CHR(39), "'") ''
fString = Replace(fString, CHR(13), "") '回车是一个13+10
fString = Replace(fString, CHR(10) & CHR(10), " <P>") '
fString = Replace(fString, CHR(10), " <BR>")
' fString = Replace(fString, CHR(32), " ") ' 空格
HTMLfilter = fString
end if
end function
%>
<%
Function isemail(strng)
isemail = false
Dim regEx, Match ' Create variables.
Set regEx = New RegExp ' Create a regular expression object (stupid, huh?)
regEx.Pattern = "^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$" ' Sets pattern.
regEx.IgnoreCase = True ' Set case insensitivity.
Set Match = regEx.Execute(strng) ' Execute search.
if match.count then isemail= true
End Function
%>