几个简单的正则

网络整理 - 08-11
<%
Rem ## 简单正则检测是否含有非法字符
Rem ## str 待检测的字符串
Rem ## BadWordList 过滤的字符串, 必须以 | 相隔
function IsHaveBadWord(str, BadWordList)
Dim strPattern
strPattern = BadWordList & "+"
Dim oRegEx, oMatch
Set oRegEx = New RegExp
oRegEx.IgnoreCase = True ''不区分大小写
oRegEx.Global = True
oRegEx.Pattern = strPattern
Set oMatch = oRegEx.Execute(str)
If oMatch.Count Then
IsHaveBadWord = True
Else
IsHaveBadWord = False
End If
End function

Rem ## 简单正则替换非法字符, 以一个*代替
Rem ## str 待检测的字符串
Rem ## BadWordList 过滤的字符串, 必须以 | 相隔
function ReplaceBadWord(str, BadWordList)
Dim strPattern
strPattern = BadWordList & "+"
Dim oRegEx, oMatch
Set oRegEx = New RegExp
oRegEx.IgnoreCase = True ''不区分大小写
oRegEx.Global = True
oRegEx.Pattern = strPattern
ReplaceBadWord = oRegEx.Replace(str, "*")
Set oRegEx = Nothing
End function

response.Write("ASP萧月痕xiaoyuehen " & IsHaveBadWord("ASP萧月痕xiaoyuehen", "xiaoyuehen|萧月痕") & "<br>")
response.Write("ASP萧月痕xiaoyuehen " & ReplaceBadWord("ASP萧月痕xiaoyuehen", "xiaoyuehen|萧月痕") & "<br>")

Rem ## 检测是否为,相隔的数字序列. 可用于表单的多选提交检测
Rem ## str 待检测的字符串
function MatchNumList(str)
Dim strPattern
strPattern = "^[0-9]{1,}(,[0-9]+){0,}$"
Dim oRegEx, oMatch
Set oRegEx = New RegExp
oRegEx.IgnoreCase = True ''不区分大小写
oRegEx.Global = True
oRegEx.Pattern = strPattern
Set oMatch = oRegEx.Execute(str)
If oMatch.Count Then
MatchNumList = True
Else
MatchNumList = False
End If
End function
response.Write("6,1245,2122,456 " & MatchNumList("6,1245,2122,456") & "<br>")
response.Write("6,1a45,2122,456 " & MatchNumList("6,1a45,2122,456") & "<br>")
response.Write(",6,1245,2122,456 " & MatchNumList(",6,1245,2122,456") & "<br>")
response.Write("6,1245,2122,456, " & MatchNumList("6,1245,2122,456,") & "<br>")
%>