最近写一个程序由于涉及到要过滤信息中的电话、邮件、网址,考虑到这些信息的不确定性,决定用正则表达来解决,这两天才真正的学起正则表达式来,将近两天的学习,这个函数基本能达希望的功能,现贴出来希望对有需要有朋友有帮助。当然,这个函数还有不足的地方,希望各位朋友给于更正,谢谢!!!
'--- 函数名:SdkStr ---
'--- 参数:tStr(要过滤的字符串) ---
'--- 功能:过滤电话、邮件、网址 ---
'--- POWER BY SD Web:www.fanzny.com ---
'--- QQ:61192909 Mail:fanzny@21cn.com ---
'--- 建立时间:05-03-22 ---
'--- 转载本函数时请保留此信息 ---
Function SdkStr(tStr)
on error resume next
if Trim(tStr)="" or IsNull(tStr)=true then
SdkStr=""
exit function
end if
response.write "<br><br>处理前:" & tStr
dim sList,dList,i,s,RegEx
sList="1|2|3|4|5|6|7|8|9|0|-|_|~|/|。|:|&|@|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z"
dList="1|2|3|4|5|6|7|8|9|0|-|_|~|/|.|:|&|@|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z"
s=ubound(split(sList,"|"))
'过滤大写字符为小写字符
for i=0 to s
tStr=replace(tStr,split(sList,"|")(i),split(dList,"|")(i))
next
Set RegEx=New RegExp
RegEx.Pattern="(/(/d{2,4}/)|(/d{3,4}-?))/d{7,8}|/d{7,8}|0?13/d{1}/d{8}|((/w)|[-]|[.])+@(((/w)|[-])+[.])+[a-z]{2,4}|http:([/w-]+/.)+[/w-]+(//[/w- .//?%&=]*)?|([/w-]+/.)+[/w-]+(//[/w- .//?%&=]*)?" '处理电话号码和电子邮件、网址
RegEx.IgnoreCase=True
RegEx.Global=True
SdkStr=RegEx.Replace(tStr,"")
Set RegEx=Nothing
End Function
response.write "<br><br>处理后:" & SdkStr("t1 www.163.com t2 xxx@126.com t3 020-12345678 test")