validate.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. /**
  2. 数据验证(表单验证)
  3. */
  4. module.exports = {
  5. error: '',
  6. check: function(data, rule) {
  7. for (var i = 0; i < rule.length; i++) {
  8. if (!rule[i].checkType) {
  9. return true;
  10. }
  11. if (!rule[i].name) {
  12. return true;
  13. }
  14. if (!rule[i].errorMsg) {
  15. return true;
  16. }
  17. if (!data[rule[i].name]) {
  18. this.error = rule[i].errorMsg;
  19. return false;
  20. }
  21. switch (rule[i].checkType) {
  22. case 'custom':
  23. if (typeof rule[i].validate == 'function') {
  24. if (!rule[i].validate(data[rule[i].name])) {
  25. this.error = rule[i].errorMsg;
  26. return false;
  27. }
  28. }
  29. break;
  30. case 'required':
  31. var reg = new RegExp('/[\S]+/');
  32. if (reg.test(data[rule[i].name])) {
  33. this.error = rule[i].errorMsg;
  34. return false;
  35. }
  36. break;
  37. case 'string':
  38. var reg = new RegExp('^.{' + rule[i].checkRule + '}$');
  39. if (!reg.test(data[rule[i].name])) {
  40. this.error = rule[i].errorMsg;
  41. return false;
  42. }
  43. break;
  44. case 'int':
  45. var reg = new RegExp('^(-[1-9]|[1-9])[0-9]{' + rule[i].checkRule + '}$');
  46. if (!reg.test(data[rule[i].name])) {
  47. this.error = rule[i].errorMsg;
  48. return false;
  49. }
  50. break;
  51. break;
  52. case 'between':
  53. if (!this.isNumber(data[rule[i].name])) {
  54. this.error = rule[i].errorMsg;
  55. return false;
  56. }
  57. var minMax = rule[i].checkRule.split(',');
  58. minMax[0] = Number(minMax[0]);
  59. minMax[1] = Number(minMax[1]);
  60. if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
  61. this.error = rule[i].errorMsg;
  62. return false;
  63. }
  64. break;
  65. case 'betweenD':
  66. var reg = /^-?[1-9][0-9]?$/;
  67. if (!reg.test(data[rule[i].name])) {
  68. this.error = rule[i].errorMsg;
  69. return false;
  70. }
  71. var minMax = rule[i].checkRule.split(',');
  72. minMax[0] = Number(minMax[0]);
  73. minMax[1] = Number(minMax[1]);
  74. if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
  75. this.error = rule[i].errorMsg;
  76. return false;
  77. }
  78. break;
  79. case 'betweenF':
  80. var reg = /^-?[0-9][0-9]?.+[0-9]+$/;
  81. if (!reg.test(data[rule[i].name])) {
  82. this.error = rule[i].errorMsg;
  83. return false;
  84. }
  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) {
  95. this.error = rule[i].errorMsg;
  96. return false;
  97. }
  98. break;
  99. case 'notsame':
  100. if (data[rule[i].name] == rule[i].checkRule) {
  101. this.error = rule[i].errorMsg;
  102. return false;
  103. }
  104. break;
  105. case 'email':
  106. var reg = /^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/;
  107. if (!reg.test(data[rule[i].name])) {
  108. this.error = rule[i].errorMsg;
  109. return false;
  110. }
  111. break;
  112. case 'phoneno':
  113. var reg = /^[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][0-9]))[0-9]{8}$/;
  114. if (!reg.test(data[rule[i].name])) {
  115. this.error = rule[i].errorMsg;
  116. return false;
  117. }
  118. break;
  119. case 'zipcode':
  120. var reg = /^[0-9]{6}$/;
  121. if (!reg.test(data[rule[i].name])) {
  122. this.error = rule[i].errorMsg;
  123. return false;
  124. }
  125. break;
  126. case 'reg':
  127. var reg = new RegExp(rule[i].checkRule);
  128. if (!reg.test(data[rule[i].name])) {
  129. this.error = rule[i].errorMsg;
  130. return false;
  131. }
  132. break;
  133. case 'in':
  134. if (rule[i].checkRule.indexOf(data[rule[i].name]) == -1) {
  135. this.error = rule[i].errorMsg;
  136. return false;
  137. }
  138. break;
  139. case 'notnull':
  140. if (data[rule[i].name] == 0 || data[rule[i].name] == undefined || data[rule[i].name] == null || data[rule[i].name]
  141. .length < 1) {
  142. this.error = rule[i].errorMsg;
  143. return false;
  144. }
  145. break;
  146. case 'lengthMin':
  147. if (data[rule[i].name].length < rule[i].checkRule) {
  148. this.error = rule[i].errorMsg;
  149. return false;
  150. }
  151. break;
  152. case 'lengthMax':
  153. if (data[rule[i].name].length > rule[i].checkRule) {
  154. this.error = rule[i].errorMsg;
  155. return false;
  156. }
  157. break;
  158. }
  159. }
  160. return true;
  161. },
  162. isNumber: function(checkVal) {
  163. var reg = /^-?[1-9][0-9]?.?[0-9]*$/;
  164. return reg.test(checkVal);
  165. }
  166. }