您的位置:首页 > 编程语言 > ASP

用正则表达式来增强VBScript(ASP)类型判断

2007-11-18 09:58 711 查看
 


Dim dicParamType


 Set dicParamType = Server.CreateObject("Scripting.Dictionary")


 dicParamType.Add "Account","^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,24}$"


 dicParamType.Add "Password","^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,24}$"


 dicParamType.Add "Email","w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*"


 dicParamType.Add "Phone","^[+]{0,1}(d){1,3}[ ]?([-]?((d)|[ ]){1,12})+$"


 dicParamType.Add "Mobil","^[+]{0,1}(d){1,3}[ ]?([-]?((d)|[ ]){1,12})+$"


 dicParamType.Add "Postal","^[a-zA-Z0-9 ]{3,12}$"


 dicParamType.Add "IP","^[0-9.]{1,20}$"


 dicParamType.Add "Url","^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$"


 dicParamType.Add "RelUrl","^/*[^/:*?<>|]+/*$"


 dicParamType.Add "FileName","^[^/:*?<>|]+$"


 dicParamType.Add "FilePath","(^[A-Z]:/[^/:*?<>|]+.w{2,6})"


 dicParamType.Add "FolderName","^[^/:*?<>|]+$"


 dicParamType.Add "FolderPath","(^[A-Z]:/[^/:*?<>|]+/*$)|(/{2}[^/:*?<>|]+/*$)"


 dicParamType.Add "Natural","^d+$"


 dicParamType.Add "PstInteger","^[0-9]*[1-9][0-9]*$"


 dicParamType.Add "NgtInteger","^-[0-9]*[1-9][0-9]*$"


 dicParamType.Add "Integer","^-?d+$"


 dicParamType.Add "PstFloat","^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$"


 dicParamType.Add "NgtFloat","^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$"


 dicParamType.Add "Float","^(-?d+)(.d+)?$"


 dicParamType.Add "IsChinese","^[一-龥]+$"


 dicParamType.Add "HasChinese","[一-龥]+"


 dicParamType.Add "IsDateTime","^((((1[6-9]|[2-9]d)d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]d|3[01]))|(((1[6-9]|[2-9]d)d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]d|30))|(((1[6-9]|[2-9]d)d{2})-0?2-(0?[1-9]|1d|2[0-8]))|(((1[6-9]|[2-9]d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?d):[0-5]?d:[0-5]?d$"


 dicParamType.Add "IsDate","^((((1[6-9]|[2-9]d)d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]d|3[01]))|(((1[6-9]|[2-9]d)d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]d|30))|(((1[6-9]|[2-9]d)d{2})-0?2-(0?[1-9]|1d|2[0-8]))|(((1[6-9]|[2-9]d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$"


 dicParamType.Add "IsTime","^(20|21|22|23|[0-1]?d):[0-5]?d:[0-5]?d$"




 Function IsType(vnt,vntType)


  IsType = False


  If Typename(vntType)="Integer" Then


   If vntType < dicParamType.Count And vntType>=0 Then IsType=regTest(vnt,dicParamType.items()(vntType))


  Else


   If dicParamType.Exists(vntType) Then IsType=regTest(vnt,dicParamType(vntType))


  End If


 End Function


 Function IsObjType(obj,strType) 


  IsObjType = False


  If IsObject(obj) Then


   If strType="object" Then


    IsObjType = True


   ElseIf TypeName(obj)=strType Then


    IsObjType = True


   End If


  End If


 End Function


 Function regTest(ByVal strTest,ByVal strPattern)


   Dim objReg


  Set objReg = New RegExp


  If IsEmpty(strPattern) Or IsNull(strPattern) Or IsEmpty(strTest) Or IsNull(strTest) Then 


   regTest=False


   Exit Function


  End If


  objReg.Pattern=strPattern


   objReg.IgnoreCase = True 


  objReg.Global = True 


   regTest = objReg.Test(strTest)


  Set objReg = Nothing


   End Function 



通过这个函数可以增强VBscript的“类型”判断能力,当然其间的正则表达式可以应用在任何其他语言中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息