使用正则表达的几个ASP验证函数

根据正则表达式写了几个ASP验证或者过滤函数,源码如下:

函数一:过滤不是中文的字符并返回
Function dealChinese(checkStr)
Dim RegExpObj
Dim resultStr

Set RegExpObj=new RegExp
RegExpObj.Global = True
RegExpObj.Pattern="[^\u4e00-\u9fa5]"
resultStr = RegExpObj.replace(checkStr,"")    '将非中文字符删除

Set RegExpObj=nothing
dealChinese=resultStr
End Function

函数二:验证是否为Email
Function isEmail(email)
Dim m,n
Dim result
result=true
'方法一(较为简单)
' n=Instr(email,"@")
' m=InstrRev(email,".")
' if n<2 or m=0 or m=Len(email) or m<=n+1 then result=false
'方法二(相对严格)
Dim RegExpObj
Set RegExpObj=new RegExp
RegExpObj.Pattern="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
result=RegExpObj.test(email)
Set RegExpObj=nothing
'------
isEmail=result
End Function

函数三:过滤用户名中的非法字符
Function dealUserName(userName)
Dim RegExpObj
Dim resultStr

Set RegExpObj=new RegExp
RegExpObj.Global = True
RegExpObj.Pattern="[^a-zA-Z0-9_]" '只允许字母、数字和下划线
resultStr = RegExpObj.replace(userName,"")
  
Set RegExpObj=nothing
dealUserName=resultStr
End Function

函数四:检查帖子内容
Function dealContent(checkStr_)
Dim RegExpObj
Dim resultStr,checkStr

'剔除多余空格(复制代码时注意,下面的Replace的第二个参数是两个连续空格,在发表文章的时候被替换为一个)
checkStr=checkStr_
do while Instr(checkStr," ")
checkStr=Replace(checkStr," "," ") '将两个连续的空格替换为一个空格
loop
checkStr = Trim(checkStr)

'过滤非法字符,允许字符有:中文、数字、字母以及部分标点符号
Set RegExpObj=new RegExp
RegExpObj.Global = True
RegExpObj.Pattern = "[^\u4e00-\u9fa5|a-zA-Z0-9|,。?+-×÷!:;、()“”《》 ,!:;\(\)@=\_\^\#\+\-\*\/\.\?]"
resultStr = RegExpObj.replace(checkStr, "")

Set RegExpObj=nothing
dealContent=resultStr
End Function

其实,函数1、3、4的道理是一样的,即将不被允许的字符删除。这对于确定发表内容字符范围的情况是非常适合的。当然,对于允许范围很大,限制字符相对较少的可以采用相反的方法,如对函数四进行改造如下:

函数五:检查帖子内容二
Function dealContent(checkStr_)
Dim RegExpObj
Dim resultStr,checkStr

'剔除多余空格(复制代码时注意,下面的Replace的第二个参数是两个连续空格,在发表文章的时候被替换为一个)
checkStr=checkStr_
do while Instr(checkStr," ")
checkStr=Replace(checkStr," "," ") '将两个连续的空格替换为一个空格
loop
checkStr = Trim(checkStr)

'过滤非法字符,不允许字符有:<>'&/\
Set RegExpObj=new RegExp
RegExpObj.Global = True
RegExpObj.Pattern = "[<>\'&\/\\]"
resultStr = RegExpObj.replace(checkStr, "")

Set RegExpObj=nothing
dealContent=resultStr
End Function



评论: 0 | 引用: 0 | 查看次数: 2158
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭

 广告位

↑返回顶部↑