| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | const strategies = {  // errorMsg参数,提升了适用性  isNoEmpty: function (value, errorMsg) { //不为空    if (value === '' || value === undefined || value === false || JSON.stringify(value) === '[]' || JSON.stringify(value) === '{}') {      // 返回字符串true  错误信息      return errorMsg;    }  },  minLength: function (value, length, errorMsg) { //限制最小长度    if (value.length < length) {      return errorMsg;    }  },  maxLength: function (value, length, errorMsg) { //限制最小长度    if (value.length > length) {      return errorMsg;    }  },  isMobile: function (value, errorMsg) {    if (!/^([0-9]{11})$/.test(value)) { //电话号码校验      return errorMsg;    }  },  isWx: function (value, errorMsg) {    if (!/^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/.test(value)) { //微信码校验      return errorMsg;    }  },  isEmail: function (value, errorMsg) {    if (!/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(value)) { //邮箱校验      return errorMsg;    }  },  money: function (value, errorMsg) {    if (!/^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/.test(value) || parseFloat(value) < 0.01) { //金额校验      return errorMsg;    }  },  name: function (value, errorMsg) {    if (!/^[u4e00-u9fa5·0-9A-z]+$/.test(value)) { //金额校验      return errorMsg;    }  },  isUrl:function(value,errorMsg){      if(value.indexOf('http') < 0){          return errorMsg;      }  },  // isUrl(value, errorMsg) {   //   if (!/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/.test(value)) {  //     return errorMsg;  //   }  // }};class Validate {  constructor() {    this.cache = []  }}Validate.prototype.add = function (value, rule, errorMsg) {  this.cache.push(function () {    // 规则    let method, arr;    //判断为已有的策略还是新增的    if (typeof rule === 'string') {      arr = rule.split(':');      let strategy = arr.shift();      method = strategies[strategy];    } else {      arr = [];      method = rule;    }    arr.unshift(value);    arr.push(errorMsg);    return method.apply(null, arr);  });};Validate.prototype.start = function () {  for (let i = 0, validatorFunc; validatorFunc = this.cache[i++];) {    let msg = validatorFunc();    if (msg) {      return msg;    }  }};export default Validate
 |