checker.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. module.exports = {
  2. error : '',
  3. check : function (dataBeCheck, rule){
  4. dataBeCheck = JSON.stringify(dataBeCheck);
  5. var data = JSON.parse(dataBeCheck);
  6. for(var i = 0; i < rule.length; i++){
  7. if (!rule[i].checkType){ return true;}
  8. if (!rule[i].name){return true;}
  9. if (!rule[i].errorMsg) {return true;}
  10. if (!data[rule[i].name] || data[rule[i].name] == '') {this.error = rule[i].errorMsg; return false;}
  11. // 检查前去除内容的空格及换行
  12. if(typeof(data[rule[i].name]) == 'string'){data[rule[i].name] = data[rule[i].name].replace(/\s/g,"");}
  13. switch (rule[i].checkType){
  14. case 'string':
  15. var reg = new RegExp('^.{' + rule[i].checkRule + '}$');
  16. if(!reg.test(data[rule[i].name])) {this.error = rule[i].errorMsg; return false;}
  17. break;
  18. case 'int':
  19. var ruleArr = rule[i].checkRule.split(',');
  20. if(rule.length < 2){
  21. ruleArr[0] = Number(ruleArr[0]) - 1;
  22. ruleArr[1] = '';
  23. }else{
  24. ruleArr[0] = Number(ruleArr[0]) - 1;
  25. ruleArr[1] = Number(ruleArr[1]) - 1;
  26. }
  27. var reg = new RegExp('^(-[1-9]|[1-9])[0-9]{' + ruleArr[0] + ',' + ruleArr[1] + '}$');
  28. if(!reg.test(data[rule[i].name])) {this.error = rule[i].errorMsg; return false;}
  29. break;
  30. break;
  31. case 'between':
  32. if (!this.isNumber(data[rule[i].name])){
  33. this.error = rule[i].errorMsg;
  34. return false;
  35. }
  36. var minMax = rule[i].checkRule.split(',');
  37. minMax[0] = Number(minMax[0]);
  38. minMax[1] = Number(minMax[1]);
  39. if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
  40. this.error = rule[i].errorMsg;
  41. return false;
  42. }
  43. break;
  44. case 'betweenD':
  45. var reg = /^-?\d+$/;
  46. if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
  47. var minMax = rule[i].checkRule.split(',');
  48. minMax[0] = Number(minMax[0]);
  49. minMax[1] = Number(minMax[1]);
  50. if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
  51. this.error = rule[i].errorMsg;
  52. return false;
  53. }
  54. break;
  55. case 'betweenF':
  56. var reg = /^-?[0-9][0-9]?.+[0-9]+$/;
  57. if (!reg.test(data[rule[i].name])){this.error = rule[i].errorMsg; return false;}
  58. var minMax = rule[i].checkRule.split(',');
  59. minMax[0] = Number(minMax[0]);
  60. minMax[1] = Number(minMax[1]);
  61. if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
  62. this.error = rule[i].errorMsg;
  63. return false;
  64. }
  65. break;
  66. case 'same':
  67. if (data[rule[i].name] != rule[i].checkRule) { this.error = rule[i].errorMsg; return false;}
  68. break;
  69. case 'notsame':
  70. if (data[rule[i].name] == rule[i].checkRule) { this.error = rule[i].errorMsg; return false; }
  71. break;
  72. case 'email':
  73. var reg = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
  74. if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
  75. break;
  76. case 'phoneno':
  77. var reg = /^1[0-9]{10,10}$/;
  78. if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
  79. break;
  80. case 'zipcode':
  81. var reg = /^[0-9]{6}$/;
  82. if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
  83. break;
  84. case 'reg':
  85. var reg = new RegExp(rule[i].checkRule);
  86. if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
  87. break;
  88. case 'in':
  89. if(rule[i].checkRule.indexOf(data[rule[i].name]) == -1){
  90. this.error = rule[i].errorMsg; return false;
  91. }
  92. break;
  93. case 'notnull':
  94. if(data[rule[i].name] == null || data[rule[i].name].length < 1){this.error = rule[i].errorMsg; return false;}
  95. break;
  96. case 'samewith':
  97. if(data[rule[i].name] != data[rule[i].checkRule]){this.error = rule[i].errorMsg; return false;}
  98. break;
  99. case 'numbers':
  100. var reg = new RegExp('^[0-9]{' + rule[i].checkRule + '}$');
  101. if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
  102. break;
  103. }
  104. }
  105. return true;
  106. },
  107. isNumber : function (checkVal){
  108. checkVal = Number(checkVal);
  109. if(checkVal == NaN){return false;}
  110. return true;
  111. }
  112. }