« »
2011-07-02Python

223

Python表单和常用数据验证

  1. #! /usr/bin/env python
  2. #coding=utf-8
  3. import types
  4. import re
  5.  
  6. """
  7. 验证所有表单提交的数据
  8. """
  9.  
  10. #判断是否为整数 15
  11. def IsNumber(varObj):
  12.  
  13.     return type(varObj) is types.IntType
  14.  
  15. #判断是否为字符串 string
  16. def IsString(varObj):
  17.  
  18.     return type(varObj) is types.StringType

  1. #判断是否为浮点数 1.324
  2. def IsFloat(varObj):
  3.     return type(varObj) is types.FloatType
  4.  
  5. #判断是否为字典 {'a1':'1','a2':'2'}
  6. def IsDict(varObj):
  7.  
  8.     return type(varObj) is types.DictType
  9.  
  10. #判断是否为tuple [1,2,3]
  11. def IsTuple(varObj):
  12.  
  13.     return type(varObj) is types.TupleType
  14.  
  15. #判断是否为List [1,3,4]
  16. def IsList(varObj):
  17.  
  18.     return type(varObj) is types.ListType
  19.  
  20. #判断是否为布尔值 True
  21. def IsBoolean(varObj):
  22.  
  23.     return type(varObj) is types.BooleanType
  24.  
  25. #判断是否为货币型 1.32
  26. def IsCurrency(varObj):
  27.  
  28.     #数字是否为整数或浮点数
  29.     if IsFloat(varObj) and IsNumber(varObj):
  30.         #数字不能为负数
  31.         if varObj >0:
  32.             return isNumber(currencyObj)
  33.             return False
  34.     return True
  35.  
  36. #判断某个变量是否为空 x
  37. def IsEmpty(varObj):
  38.  
  39.     if len(varObj) == 0:
  40.         return True
  41.     return False
  42.  
  43. #判断变量是否为None None
  44. def IsNone(varObj):
  45.  
  46.     return type(varObj) is types.NoneType# == "None" or varObj == "none":
  47.  
  48. #判断是否为日期格式,并且是否符合日历规则 2010-01-31
  49. def IsDate(varObj):
  50.  
  51.     if len(varObj) == 10:
  52.         rule = '(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$/'
  53.         match = re.match( rule , varObj )
  54.         if match:
  55.             return True
  56.         return False
  57.     return False
  58.  
  59. #判断是否为邮件地址
  60. def IsEmail(varObj):
  61.  
  62.     rule = '[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$'
  63.     match = re.match( rule , varObj )
  64.  
  65.     if match:
  66.         return True
  67.     return False
  68.  
  69. #判断是否为中文字符串
  70. def IsChineseCharString(varObj):
  71.  
  72.     for x in varObj:
  73.         if (x >= u"\u4e00" and x<=u"\u9fa5") or (x >= u'\u0041' and x<=u'\u005a') or (x >= u'\u0061' and x<=u'\u007a'):
  74.            continue
  75.         else:
  76.            return False
  77.     return True
  78.  
  79.  
  80. #判断是否为中文字符
  81. def IsChineseChar(varObj):
  82.  
  83.     if varObj[0] > chr(127):
  84.        return True
  85.     return False
  86.  
  87. #判断帐号是否合法 字母开头,允许4-16字节,允许字母数字下划线
  88. def IsLegalAccounts(varObj):
  89.  
  90.     rule = '[a-zA-Z][a-zA-Z0-9_]{3,15}$'
  91.     match = re.match( rule , varObj )
  92.  
  93.     if match:
  94.         return True
  95.     return False
  96.  
  97. #匹配IP地址
  98. def IsIpAddr(varObj):
  99.  
  100.     rule = '\d+\.\d+\.\d+\.\d+'
  101.     match = re.match( rule , varObj )
  102.  
  103.     if match:
  104.         return True
  105.     return False
  106.  
  107. if __name__=='__main__':
  108.     print 'IsDate:',IsDate('2010-01-31')
  109.     print 'IsNone:',IsNone(None)
  110.     print 'IsEmpty:',IsEmpty('1')
  111.     print 'IsCurrency:',IsCurrency(1.32)
  112.     print 'IsList:',IsList([1,3,4])
  113.     print 'IsTuple:',IsTuple([1,3,4])
  114.     print 'IsDict:',IsDict({'a1':'1','a2':'2'})
  115.     print 'IsFloat:',IsFloat(1.2)
  116.     print 'IsString:',IsString('comeon')
  117.     print 'IsNumber:',IsNumber(15)
  118.     print 'IsEmail:',IsEmail('webmaster@linuxany.com')
  119.     print 'IsChineseChar:',IsChineseChar(u'')
  120.     print 'IsChineseCharString:',IsChineseCharString(u'中文')
  121.     print 'IsLegalAccounts:',IsLegalAccounts('lacn_z')
  122.     print 'IsIpAddr:',IsIpAddr('123.1234.1.2')
  123.     pass

您还可能感兴趣的内容

日志信息 »

该日志于2011-07-02 23:54由 admin 发表在Python分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

没有评论

发表评论 »


返回顶部