js 常用业务校验大全

429 阅读3分钟

以下校验以实际实现为准,有待校验

let validator = {
  /**
   *  过滤特殊字符
   *  @param str 需要过滤的字符
   *  @return str 完成过滤的字符
   * */
  filterStr(str) {
    var pattern = new RegExp("[`~!#$^&*()=|{}':;',\\[\\]<>/?~!#¥……&*()——|{}【】‘;:”“'。,、?]");
    var retrunStr = '';
    for (var i = 0; i < str.length; i++) {
      retrunStr = retrunStr + str.substr(i, 1).replace(pattern, '');
    }
    return retrunStr;
  },
  // 返回
  filterNumberEng(str) {
    var pattern = /[^\d|0-9|a-z|A-Z]/g;
    return str.replace(pattern, '');
  },
  //验证字符串非空
  IsNotEmpty(input) {
    if (input != '') {
      return true;
    } else {
      return false;
    }
  },
  // 验证是否为纳税人识别号/统一社会信用代码
  IsTaxNo(input) {
    var regex = /[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  // 验证银行卡号长度是否正确
  CheckBankNo(input) {
    var regex = /^([1-9]{1})(\d{11}|\d{15}|\d{16}|\d{17}|\d{18}|\d{19})$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证数字(double类型) [可以包含负号和小数点]
  IsNumber(input) {
    var regex = /^-?\d+$|^(-?\d+)(\.\d+)?$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  // 大于等于0,并精确到小数点后两位
  IsNoNegative(input) {
    var regex = /^[0-9]+(.[0-9]{1,3})?$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证整数
  IsInteger(input) {
    var regex = /^-?\d+$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证非负整数
  IsIntegerNotNagtive(input) {
    var regex = /^\d+$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证正整数
  IsIntegerPositive(input) {
    var regex = /^[0-9]*[1-9][0-9]*$/;
    var match = input.toString().match(regex);
    // console.log(match)
    if (match) {
      return true;
    } else {
      return false;
    }
  },
  //验证小数
  IsDecimal(input) {
    var regex = /^([-+]?[1-9]\d*\.\d+|-?0\.\d*[1-9]\d*)$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证只包含英文字母
  IsEnglishCharacter(input) {
    var regex = /^[A-Za-z]+$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证只包含数字和英文字母
  IsIntegerAndEnglishCharacter(input) {
    var regex = /^[0-9A-Za-z]+$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  IsIntegerNumber(input) {
    var regex = /^[0-9]+$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  isValidSymbol(input) {
    var regex = /^[!@#$%^&*()_+{}[\]?,."';’,。`]+$/;
    return input.match(regex);
  },
  //验证只包含汉字
  IsChineseCharacter(input) {
    var regex = /^[\u4e00-\u9fa5]+$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证只包含汉字和英文字母
  IsChineseAndEnglishCharacter(input) {
    var regex = /^[\u4e00-\u9fa5A-Za-z]+$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证数字长度范围(数字前端的0计长度)[若要验证固定长度,可传入相同的两个长度数值]
  IsIntegerLength(input, lengthBegin, lengthEnd) {
    var pattern = '^\\d{' + lengthBegin + ',' + lengthEnd + '}$';
    var regex = new RegExp(pattern);
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证字符串包含内容
  IsStringInclude(input, withEnglishCharacter, withNumber, withChineseCharacter) {
    if (!Boolean(withEnglishCharacter) && !Boolean(withNumber) && !Boolean(withChineseCharacter)) {
      return false; //如果英文字母、数字和汉字都没有,则返回false
    }
    var pattern = '^[';
    if (Boolean(withEnglishCharacter)) {
      pattern += 'a-zA-Z';
    }
    if (Boolean(withNumber)) {
      pattern += '0-9';
    }
    if (Boolean(withChineseCharacter)) {
      pattern += '\\u4E00-\\u9FA5';
    }
    pattern += ']+$';
    var regex = new RegExp(pattern);
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证字符串长度范围 [若要验证固定长度,可传入相同的两个长度数值]
  IsStringLength(input, LengthBegin, LengthEnd) {
    var pattern = '^.{' + lengthBegin + ',' + lengthEnd + '}$';
    var regex = new RegExp(pattern);
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证字符串长度范围(字符串内只包含数字和/或英文字母)[若要验证固定长度,可传入相同的两个长度数值]
  IsStringLengthOnlyNumberAndEnglishCharacter(input, LengthBegin, LengthEnd) {
    var pattern = '^[0-9a-zA-z]{' + lengthBegin + ',' + lengthEnd + '}$';
    var regex = new RegExp(pattern);
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证字符串长度范围 [若要验证固定长度,可传入相同的两个长度数值]
  IsStringLengthByInclude(input, withEnglishCharacter, withNumber, withChineseCharacter, lengthBegin, lengthEnd) {
    if (!withEnglishCharacter && !withNumber && !withChineseCharacter) {
      return false; //如果英文字母、数字和汉字都没有,则返回false
    }
    var pattern = '^[';
    if (Boolean(withEnglishCharacter)) pattern += 'a-zA-Z';
    if (Boolean(withNumber)) pattern += '0-9';
    if (Boolean(withChineseCharacter)) pattern += '\\u4E00-\\u9FA5';
    pattern += ']{' + lengthBegin + ',' + lengthEnd + '}$';
    var regex = new RegExp(pattern);
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证字符串字节数长度范围 [若要验证固定长度,可传入相同的两个长度数值;每个汉字为两个字节长度]
  IsStringByteLength(input, lengthBegin, lengthEnd) {
    var regex = /[^\x00-\xff]/g;
    var byteLength = input.replace(regex, 'ok').length;
    if (byteLength >= lengthBegin && byteLength <= lengthEnd) {
      return true;
    } else {
      return false;
    }
  },
  //验证日期 [只能验证日期,不能验证时间]
  IsDateTime(input) {
    var regex = /((19|20)[0-9]{2})-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])/;
    if (regex.test(input)) {
      var ymd = input.match(/(\d{4})-(\d+)-(\d+).*/);
      var year = parseInt(ymd[1]);
      var month = parseInt(ymd[2]);
      var day = parseInt(ymd[3]);
      if (day > 28) {
        //获取当月的最后一天
        var lastDay = new Date(year, month, 0).getDate();
        return lastDay >= day;
      }
      return true;
    } else {
      uni.showToast({
        title: '日期格式错误',
        icon: 'none',
        duration: 3000,
      });
      return false;
    }
  },
  //固话手机号都可
  IsTelePhoneNumber(input) {
    var reg = /^[1][3,4,5,6,7,8][0-9]{9}$|^0\d{2,3}-?\d{7,8}$/;
    if (input.match(reg)) {
      return true;
    } else {
      uni.showToast({
        title: '电话号码格式错误',
        icon: 'none',
        duration: 3000,
      });
      return false;
    }
  },
  //验证电话号码(只针对固话)
  IsMobilePhoneNumber(input) {
    var regex = /^0\d{2,3}-?\d{7,8}$/;
    if (input.match(regex)) {
      return true;
    } else {
      uni.showToast({
        title: '固话号码格式错误',
        icon: 'none',
        duration: 3000,
      });
      return false;
    }
  },
  //验证手机号码(只针对手机)
  IsPhoneNumber(input) {
    var regex = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
    if (input.match(regex)) {
      return true;
    } else {
      uni.showToast({
        title: '手机号码格式错误',
        icon: 'none',
        duration: 3000,
      });
      return false;
    }
  },
  //验证邮政编码
  IsZipCode(input) {
    var regex = /^\d{6}$/;
    if (input.match(regex)) {
      return true;
    } else {
      uni.showToast({
        title: '邮政编码格式错误',
        icon: 'none',
        duration: 3000,
      });
      return false;
    }
  },
  //验证税号(15或者17或者18或者20位字母、数字组成)
  checkTax(input) {
    var regex = /^[A-Z0-9]{15}$|^[A-Z0-9]{17}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/;
    if (input.match(regex)) {
      return true;
    } else {
      uni.showToast({
        title: '税号格式错误',
        icon: 'none',
        duration: 3000,
      });
      return false;
    }
  },
  //验证电子邮箱 [@字符前可以包含字母、数字、下划线和点号;@字符后可以包含字母、数字、下划线和点号;@字符后至少包含一个点号且点号不能是最后一个字符;最后一个点号后只能是字母或数字]
  IsEmail(input) {
    ////邮箱名以数字或字母开头;邮箱名可由字母、数字、点号、减号、下划线组成;邮箱名(@前的字符)长度为3~18个字符;邮箱名不能以点号、减号或下划线结尾;不能出现连续两个或两个以上的点号、减号。
    //var regex = /^[a-zA-Z0-9]((?<!(\.\.|--))[a-zA-Z0-9\._-]){1,16}[a-zA-Z0-9]@([0-9a-zA-Z][0-9a-zA-Z-]{0,62}\.)+([0-9a-zA-Z][0-9a-zA-Z-]{0,62})\.?|((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/;
    var regex = /^([\w-\.]+)@([\w-\.]+)(\.[a-zA-Z0-9]+)$/;
    console.log('验证电子邮箱', input);
    if (input.match(regex)) {
      return true;
    } else {
      uni.showToast({
        title: '电子邮箱格式错误',
        icon: 'none',
        duration: 3000,
      });
      return false;
    }
  },
  //验证电子邮箱手机号都可(支付宝账号)
  IsEmailPhoneNumber(input) {
    var regex = /^(?:\w+\.?)*\w+@(?:\w+\.)+\w+|\d{9,11}$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证网址(可以匹配IPv4地址但没对IPv4地址进行格式验证;IPv6暂时没做匹配)[允许省略"://";可以添加端口号;允许层级;允许传参;域名中至少一个点号且此点号前要有内容]
  IsURL(input) {
    ////每级域名由字母、数字和减号构成(第一个字母不能是减号),不区分大小写,单个域长度不超过63,完整的域名全长不超过256个字符。在DNS系统中,全名是以一个点“.”来结束的,例如“www.nit.edu.cn.”。没有最后的那个点则表示一个相对地址。
    ////没有例如"http://"的前缀,没有传参的匹配
    //var regex = /^([0-9a-zA-Z][0-9a-zA-Z-]{0,62}\.)+([0-9a-zA-Z][0-9a-zA-Z-]{0,62})\.?$/;

    //var regex = /^(((file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp)://)|(www\.))+(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(/[a-zA-Z0-9\&%_\./-~-]*)?$/;
    var regex = /^([a-zA-Z]+:\/\/)?([\w-\.]+)(\.[a-zA-Z0-9]+)(:\d{0,5})?\/?([\w-\/]*)\.?([a-zA-Z]*)\??(([\w-]*=[\w%]*&?)*)$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证IPv4地址 [第一位和最后一位数字不能是0或255;允许用0补位]
  IsIPv4(input) {
    var regex = /^(25[0-4]|2[0-4]\d]|[01]?\d{2}|[1-9])\.(25[0-5]|2[0-4]\d]|[01]?\d?\d)\.(25[0-5]|2[0-4]\d]|[01]?\d?\d)\.(25[0-4]|2[0-4]\d]|[01]?\d{2}|[1-9])$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证IPv6地址 [可用于匹配任何一个合法的IPv6地址]
  IsIPv6(input) {
    var regex =
      /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证身份证号 [可验证一代或二代身份证]
  IsIDCard(input) {
    input = input.toUpperCase();
    //验证身份证号码格式 [一代身份证号码为15位的数字;二代身份证号码为18位的数字或17位的数字加字母X]
    if (!/(^\d{15}$)|(^\d{17}([0-9]|X)$)/i.test(input)) {
      uni.showToast({
        title: '身份证号码格式错误',
        icon: 'none',
        duration: 3000,
      });
      return false;
    }
    //验证省份
    var arrCity = {
      11: '北京',
      12: '天津',
      13: '河北',
      14: '山西',
      15: '内蒙古',
      21: '辽宁',
      22: '吉林',
      23: '黑龙江 ',
      31: '上海',
      32: '江苏',
      33: '浙江',
      34: '安徽',
      35: '福建',
      36: '江西',
      37: '山东',
      41: '河南',
      42: '湖北',
      43: '湖南',
      44: '广东',
      45: '广西',
      46: '海南',
      50: '重庆',
      51: '四川',
      52: '贵州',
      53: '云南',
      54: '西藏',
      61: '陕西',
      62: '甘肃',
      63: '青海',
      64: '宁夏',
      65: '新疆',
      71: '台湾',
      81: '香港',
      82: '澳门',
      91: '国外',
    };
    if (arrCity[parseInt(input.substr(0, 2))] == null) {
      uni.showToast({
        title: '身份证号码格式错误',
        icon: 'none',
        duration: 3000,
      });
      return false;
    }
    //验证出生日期
    var regBirth, birthSplit, birth;
    var len = input.length;
    if (len == 15) {
      regBirth = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
      birthSplit = input.match(regBirth);
      birth = new Date('19' + birthSplit[2] + '/' + birthSplit[3] + '/' + birthSplit[4]);
      if (!(birth.getYear() == Number(birthSplit[2]) && birth.getMonth() + 1 == Number(birthSplit[3]) && birth.getDate() == Number(birthSplit[4]))) {
        uni.showToast({
          title: '身份证号码格式错误',
          icon: 'none',
          duration: 3000,
        });
        return false;
      }
      return true;
    } else if (len == 18) {
      regBirth = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/i);
      birthSplit = input.match(regBirth);
      birth = new Date(birthSplit[2] + '/' + birthSplit[3] + '/' + birthSplit[4]);
      if (!(birth.getFullYear() == Number(birthSplit[2]) && birth.getMonth() + 1 == Number(birthSplit[3]) && birth.getDate() == Number(birthSplit[4]))) {
        uni.showToast({
          title: '身份证号码格式错误',
          icon: 'none',
          duration: 3000,
        });
        return false;
      }
      //验证校验码
      var valnum;
      var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
      var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
      var nTemp = 0,
        i;
      for (i = 0; i < 17; i++) {
        nTemp += input.substr(i, 1) * arrInt[i];
      }
      valnum = arrCh[nTemp % 11];
      if (valnum != input.substr(17, 1)) {
        uni.showToast({
          title: '身份证号码格式错误',
          icon: 'none',
          duration: 3000,
        });
        return false;
      }
      return true;
    }
    uni.showToast({
      title: '身份证号码格式错误',
      icon: 'none',
      duration: 3000,
    });
    return false;
  },
  //验证经度
  IsLongitude(input) {
    var regex = /^[-\+]?((1[0-7]\d{1}|0?\d{1,2})\.\d{1,5}|180\.0{1,5})$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证纬度
  IsLatitude(input) {
    var regex = /^[-\+]?([0-8]?\d{1}\.\d{1,5}|90\.0{1,5})$/;
    if (input.match(regex)) {
      return true;
    } else {
      return false;
    }
  },
  //验证微信号(可以使用6-20个子母,数字,和下划线和减号;必须以字母开头(字母不区分大小写);不能设置中文.)
  IsWechat(input) {
    var regex = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;
    if (input.match(regex)) {
      return true;
    } else {
      uni.showToast({
        title: '微信号格式错误',
        icon: 'none',
        duration: 3000,
      });
      return false;
    }
  },
  // 是否包含emoji表情
  isContainEmoji(val) {
    for (let i = 0; i < val.length; i++) {
      const hs = val.charCodeAt(i);
      if (0xd800 <= hs && hs <= 0xdbff) {
        if (val.length > 1) {
          const ls = val.charCodeAt(i + 1);
          const uc = (hs - 0xd800) * 0x400 + (ls - 0xdc00) + 0x10000;
          if (0x1d000 <= uc && uc <= 0x1f77f) {
            return true;
          }
        }
      } else if (val.length > 1) {
        const ls = val.charCodeAt(i + 1);
        if (ls == 0x20e3) {
          return true;
        }
      } else {
        if (0x2100 <= hs && hs <= 0x27ff) {
          return true;
        } else if (0x2b05 <= hs && hs <= 0x2b07) {
          return true;
        } else if (0x2934 <= hs && hs <= 0x2935) {
          return true;
        } else if (0x3297 <= hs && hs <= 0x3299) {
          return true;
        } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) {
          return true;
        }
      }
    }
    return false;
  },
  // 将emoji表情过滤掉
  filterEmoji(value) {
    const ranges = ['\ud83c[\udf00-\udfff]', '\ud83d[\udc00-\ude4f]', '\ud83d[\ude80-\udeff]'];
    return value.replace(new RegExp(ranges.join('|'), 'g'), '');
  },
  // 是否含有以下特殊符号
  isContainIllegalChar(s) {
    const regExp = new RegExp("[`~!@#$^&*()=|{}':;,\\[\\].<>/?!¥…()—【】‘;:”“。,、?]");
    return regExp.test(s);
  },
  // 是否含有以下特殊符号(:,,: ()();;.。“”"" 除外)
  isContainIllegalChar2(s) {
    const regExp = new RegExp('[`~!@#$^&*=|{}\\[\\]<>/?!¥…—【】、?]');
    return regExp.test(s);
  },
  /*
   * @desc 是否合法的数字格式
   * @param s 字符串
   * @param before 小数点前限制的位数
   * @param after 小数点后限制的位数
   */
  isValidNumberFormat(s, before, after) {
    const regExp = new RegExp(`(^\\d{1,${before}}$)|(^\\d{1,${before}}\\.\\d{1,${after}}$)`);
    return regExp.test(s);
  },
  /*
   * @desc 是否合法的供货价格式 小数位前六位,后两位 999999.99,只有1位时,必须是大于0的数字
   * @return
   */
  isValidPriceFormat(s) {
    const regExp = new RegExp('(^\\d{1,6}$)|(^\\d{1,6}\\.\\d{1,2}$)');
    var strings = s.toString().split('.');
    let flag = true;
    if (strings.length == 1) {
      if (parseInt(strings[0]) <= 0) {
        // flag = false;
      }
    }
    return regExp.test(s) && flag;
  },
  /***
   *  检测重量单位  是否合法的重量格式 小数位前六位,后两位 999999.999,只有1位时,必须是大于0的数字
   * @param s
   * @return {boolean}
   */
  isValidWeightFormat(s) {
    const regExp = new RegExp('(^\\d{1,6}$)|(^\\d{1,6}\\.\\d{1,3}$)');
    var strings = s.toString().split('.');
    let flag = true;
    if (strings.length == 1) {
      if (parseInt(strings[0]) <= 0) {
        // flag = false;
      }
    }
    return regExp.test(s) && flag;
  },
  /*
   * @desc 是否合法的折损率格式 小数位前两位,后两位 99.99
   * @return
   */
  isValidLossRateFormat(s) {
    const regExp = new RegExp('(^\\d{1,2}$)|(^\\d{1,2}\\.\\d{1,2}$)');
    return regExp.test(s);
  },
  /*
   * @desc 是否合法的注册资金/上年产值格式 小数位前6位,后2位
   * @return
   */
  isValidRegisteredCapitalFormat(s) {
    const regExp = new RegExp('(^\\d{1,6}$)|(^\\d{1,6}\\.\\d{1,2}$)');
    return regExp.test(s);
  },
  isValidChar(s) {
    if (!s || s === '') {
      return true;
    }
    const regex = /^([\u4e00-\u9fa50-9A-Za-z!@#$%^&*()_+{}[\]?,."';·’,。?!()\-【】=、`\r\n\t\s])+$/;
    const isContainEmoji = validator.isContainEmoji(s);
    return regex.test(s) && !isContainEmoji;
  },
  /**
   * 替换空格
   * **/
  replaceSpace(value) {
    return value.replace(/\s/g, '');
  },
};
export default validator;