validate.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. /**
  2. 数据验证(表单验证)
  3. 1. string
  4. 功能 : 字符串及长度检查
  5. 规则 : 最小长度,最大长度 如 1,3 或 2, 2,代表只检查最短
  6. 2. int
  7. 功能 : 整数及长度检查
  8. 规则 : 最小长度,最大长度 如 1,3
  9. 3. between
  10. 功能 : 数值区间检查
  11. 规则 : 最小值,最大值 如 1,3 或 2.5,1000
  12. 4. betweenD
  13. 功能 : 数值区间检查【整数】
  14. 规则 : 最小值,最大值 如 1,3 或 2,1000
  15. 5. same
  16. 功能 : 等值检查
  17. 规则 : 对应的值
  18. 6. notsame
  19. 功能 : 不等值检查
  20. 规则 : 对应的值
  21. 7. email
  22. 功能 : 邮箱检查
  23. 规则 : 无需设置
  24. 8. phoneno
  25. 功能 : 11位手机号检查
  26. 规则 : 无需设置
  27. 9. zipcode
  28. 功能 : 6位邮编检查
  29. 规则 : 无需设置
  30. 10. reg
  31. 功能 : 正则表达式检查
  32. 规则 : 正则表达式内容 如 "^[0-9]{1,2}$"
  33. 11. in
  34. 功能 : 包含某个字符串的检查
  35. 规则 : 字符串集,如:"北京,上海"
  36. 12. notnull
  37. 功能 : 不为空检查【null 或者 空数组】
  38. 规则 : 无需设置
  39. */
  40. module.exports = {
  41. error:'',
  42. check : function (data, rule){
  43. for(var i = 0; i < rule.length; i++){
  44. if (!rule[i].checkType){return true;}
  45. if (!rule[i].name) {return true;}
  46. if (!rule[i].errorMsg) {return true;}
  47. if (!data[rule[i].name]) {this.error = rule[i].errorMsg; return false;}
  48. switch (rule[i].checkType){
  49. case 'string':
  50. var reg = new RegExp('^.{' + rule[i].checkRule + '}$');
  51. if(!reg.test(data[rule[i].name])) {this.error = rule[i].errorMsg; return false;}
  52. break;
  53. case 'int':
  54. var reg = new RegExp('^(-[1-9]|[1-9])[0-9]{' + rule[i].checkRule + '}$');
  55. if(!reg.test(data[rule[i].name])) {this.error = rule[i].errorMsg; return false;}
  56. break;
  57. break;
  58. case 'between':
  59. if (!this.isNumber(data[rule[i].name])){
  60. this.error = rule[i].errorMsg;
  61. return false;
  62. }
  63. var minMax = rule[i].checkRule.split(',');
  64. minMax[0] = Number(minMax[0]);
  65. minMax[1] = Number(minMax[1]);
  66. if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
  67. this.error = rule[i].errorMsg;
  68. return false;
  69. }
  70. break;
  71. case 'betweenD':
  72. var reg = /^-?[1-9][0-9]?$/;
  73. if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
  74. var minMax = rule[i].checkRule.split(',');
  75. minMax[0] = Number(minMax[0]);
  76. minMax[1] = Number(minMax[1]);
  77. if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
  78. this.error = rule[i].errorMsg;
  79. return false;
  80. }
  81. break;
  82. case 'betweenF':
  83. var reg = /^-?[0-9][0-9]?.+[0-9]+$/;
  84. if (!reg.test(data[rule[i].name])){this.error = rule[i].errorMsg; return false;}
  85. var minMax = rule[i].checkRule.split(',');
  86. minMax[0] = Number(minMax[0]);
  87. minMax[1] = Number(minMax[1]);
  88. if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
  89. this.error = rule[i].errorMsg;
  90. return false;
  91. }
  92. break;
  93. case 'same':
  94. if (data[rule[i].name] != rule[i].checkRule) { this.error = rule[i].errorMsg; return false;}
  95. break;
  96. case 'notsame':
  97. if (data[rule[i].name] == rule[i].checkRule) { this.error = rule[i].errorMsg; return false; }
  98. break;
  99. case 'email':
  100. var reg = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
  101. if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
  102. break;
  103. case 'phoneno':
  104. var reg = /^1[0-9]{10,10}$/;
  105. if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
  106. break;
  107. case 'zipcode':
  108. var reg = /^[0-9]{6}$/;
  109. if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
  110. break;
  111. case 'reg':
  112. var reg = new RegExp(rule[i].checkRule);
  113. if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
  114. break;
  115. case 'in':
  116. if(rule[i].checkRule.indexOf(data[rule[i].name]) == -1){
  117. this.error = rule[i].errorMsg; return false;
  118. }
  119. break;
  120. case 'notnull':
  121. if(data[rule[i].name] == null || data[rule[i].name].length < 1){this.error = rule[i].errorMsg; return false;}
  122. break;
  123. }
  124. }
  125. return true;
  126. },
  127. isNumber : function (checkVal){
  128. checkVal = Number(checkVal);
  129. if(checkVal == NaN){return false;}
  130. return true;
  131. }
  132. }