zhangzengfei
2023-11-29 0d3db253cad1fb49c4fae9b9a537c8c318c7172f
src/scripts/validate.ts
@@ -57,6 +57,34 @@
  return callback(new Error('输入的手机号错误'))
}
export function isIDCard(rule, idcode, callback) {
  if (idcode==""||idcode===undefined) {
    return callback()
  }
  var weight_factor = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
  var check_code = ['1', '0', 'X' , '9', '8', '7', '6', '5', '4', '3', '2'];
  var code = idcode + "";
  var last = idcode[17];//最后一位
  var seventeen = code.substring(0,17);
  var arr = seventeen.split("");
  var len = arr.length;
  var num = 0;
  for(var i = 0; i < len; i++){
      num = num + +arr[i] * weight_factor[i];
  }
  var resisue = num%11;
  var last_no = check_code[resisue];
  var idcard_patter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/;
  var format = idcard_patter.test(idcode);
  return last === last_no && format ? callback() : callback(new Error('身份证号格式错误'));
}
export function isIPv4(rule, value, callback) {
  if (!value) {
    return callback(new Error('输入不可以为空'));
@@ -92,4 +120,16 @@
export function vaildHost(str) {
  let re = /^(?=^.{3,255}$)(http(s)?:\/\/)?(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+\.\w+)*$/
  return re.test(str)
}
//校验自然数(非负整数)
export function isNonnegativeInteger(rule, value, callback) {
  if(!value){
    return callback(new Error('输入不能为空'));
  }
  const reg = /^\d+$/;
  if(!reg.test(value)){
    return callback(new Error('请输入非负整数'));
  }
  return callback()
}