2005/10/20 | 敝帚自珍:ASP数据校验类Validator
类别(Develop) | 评论(0) | 阅读(54) | 发表于 09:32
<%@Language="VBScript" CodePage="936"%>
<%
'Option Explicit
Class Validator
'*************************************************
'    Validator for ASP beta 3 服务器端脚本
'    code by 我佛山人
'    wfsr@cunite.com
'*************************************************
    Private Re
    Private ICodeName
    Private ICodeSessionName

    Public Property Let CodeName(ByVal PCodeName)
        ICodeName = PCodeName
    End Property

    Public Property Get CodeName()
        CodeName = ICodeName
    End Property

    Public Property Let CodeSessionName(ByVal PCodeSessionName)
        ICodeSessionName = PCodeSessionName
    End Property

    Public Property Get CodeSessionName()
        CodeSessionName = ICodeSessionName
    End Property

    Private Sub Class_Initialize()
        Set Re = New RegExp
        Re.IgnoreCase = True
        Re.Global = True
        Me.CodeName = "vCode"
        Me.CodeSessionName = "vCode"
    End Sub

    Private Sub Class_Terminate()
        Set Re = Nothing
    End Sub

    Public Function IsEmail(ByVal Str)
        IsEmail = Test("^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", Str)
    End Function

    Public Function IsUrl(ByVal Str)
        IsUrl = Test("^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>""])*$", Str)
    End Function

    Public Function IsNum(ByVal Str)
        IsNum= Test("^\d+$", Str)
    End Function

    Public Function IsQQ(ByVal Str)
        IsQQ = Test("^[1-9]\d{4,8}$", Str)
    End Function

    Public Function IsZip(ByVal Str)
        IsZip = Test("^[1-9]\d{5}$", Str)
    End Function

    Public Function IsIdCard(ByVal Str)
        IsIdCard = Test("^\d{15}(\d{2}[A-Za-z0-9])?$", Str)
    End Function

    Public Function IsChinese(ByVal Str)
        IsChinese = Test("^[\u0391-\uFFE5]+$", Str)
    End Function

    Public Function IsEnglish(ByVal Str)
        IsEnglish = Test("^[A-Za-z]+$", Str)
    End Function

    Public Function IsMobile(ByVal Str)
        IsMobile = Test("^((\(\d{3}\))|(\d{3}\-))?13\d{9}$", Str)
    End Function

    Public Function IsPhone(ByVal Str)
        IsPhone = Test("^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$", Str)
    End Function

    Public Function IsSafe(ByVal Str)
        IsSafe = (Test("^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\""]*)|.{0,5})$|\s", Str) = False)
    End Function

    Public Function IsNotEmpty(ByVal Str)
        IsNotEmpty = LenB(Str) > 0
    End Function

    Public Function IsDateFormat(ByVal Str, ByVal Format)
        IF Not IsDate(Str) Then
            IsDateFormat = False
            Exit Function
        End IF

        IF Format = "YMD" Then
            IsDateFormat = Test("^((\d{4})|(\d{2}))([-./])(\d{1,2})\4(\d{1,2})$", Str)
        Else
            IsDateFormat = Test("^(\d{1,2})([-./])(\d{1,2})\\2((\d{4})|(\d{2}))$", Str)
        End IF
    End Function

    Public Function IsEqual(ByVal Src, ByVal Tar)
        IsEqual = (Src = Tar)
    End Function

    Public Function Compare(ByVal Op1, ByVal Operator, ByVal Op2)
        Compare = False
        IF Dic.Exists(Operator) Then
            Compare = Eval(Dic.Item(Operator))
            Elseif IsNotEmpty(Op1) Then
                Compare = Eval(Op1 & Operator & Op2 )
        End IF
    End Function

    Public Function Range(ByVal Src, ByVal Min, ByVal Max)
        Min = CInt(Min) : Max = CInt(Max)
        Range = (Min < Src And Src < Max)
    End Function

    Public Function Group(ByVal Src, ByVal Min, ByVal Max)
        Min = CInt(Min) : Max = CInt(Max)
        Dim Num : Num = UBound(Split(Src, ",")) + 1
        Group = Range(Num, Min - 1, Max + 1)
    End Function

    Public Function Custom(ByVal Str, ByVal Reg)
        Custom = Test(Reg, Str)
    End Function

    Public Function Limit(ByVal Str, ByVal Min, ByVal Max)
        Min = CInt(Min) : Max = CInt(Max)
        Dim L : L = Len(Str)
        Limit = (Min <= L And L <= Max)
    End Function

    Public Function LimitB(ByVal Str, ByVal Min, ByVal Max)
        Min = CInt(Min) : Max = CInt(Max)
        Dim L : L =bLen(Str)
        LimitB = (Min <= L And L <= Max)
    End Function

    Private Function Test(ByVal Pattern, ByVal Str)
        If IsNull(Str) Or IsEmpty(Str) Then
            Test = False
        Else
            Re.Pattern = Pattern
            Test = Re.Test(CStr(Str))
        End If
    End Function

    Public Function bLen(ByVal Str)
        bLen = Len(Replace(Str, "[^\x00-\xFF]", ".."))
    End Function

    Private Function Replace(ByVal Str, ByVal Pattern, ByVal ReStr)
        Re.Pattern = Pattern
        Replace =     Re.Replace(Str, ReStr)
    End Function

    Private Function B2S(ByVal iStr)
        Dim reVal : reVal= ""
        Dim i, Code, nCode
        For i = 1 to LenB(iStr)
            Code = AscB(MidB(iStr, i, 1))
            IF Code < &h80 Then
                reVal = reVal & Chr(Code)
            Else
                nCode = AscB(MidB(iStr, i+1, 1))
                reVal = reVal & Chr(CLng(Code) * &h100 + CInt(nCode))
                i = i + 1
            End IF
        Next
        B2S = reVal
    End Function

    Public Function SafeStr(ByVal Name)
        If IsNull(Name) Or IsEmpty(Name) Then
            SafeStr = False
        Else
            SafeStr = Replace(Trim(Name), "(\s*and\s*\w*=\w*)|['%&<>=]", "")
        End If
    End Function

    Public Function SafeNo(ByVal Name)
        If IsNull(Name) Or IsEmpty(Name) Then
            SafeNo = 0
        Else
            SafeNo = (Replace(Trim(Name), "^[\D]*(\d+)[\D\d]*$", "$1"))
        End If
    End Function

    Public Function IsValidCode()
        IsValidCode = ((Request.Form(Me.CodeName) = Session(Me.CodeSessionName)) AND Session(Me.CodeSessionName) <> "")
    End Function

    Public Function IsValidPost()
        Dim Url1 : Url1 = Cstr(Request.ServerVariables("HTTP_REFERER"))
        Dim Url2 : Url2 = Cstr(Request.ServerVariables("SERVER_NAME"))
        IsValidPost = (Mid(Url1, 8, Len(Url2)) = Url2)
    End Function

End Class
%>
0

评论Comments

日志分类
首页[66]
Develop[14]
Plus[3]
Melody[7]
Essay[38]
Archive[4]