?提供日常开发中的一些js处理数据的方法,包括对数据的过滤,以及对数据的验证等。也希望大家能留下你好用的方法~~

  • 数据过滤
    • 手机号码隐藏中间4位
    • 保留两位小数
    • 每三位逗号隔开,后面补两位小数,多用于金额数字
    • 银行尾号四位数
    • 数字金额转换为大写人民币汉字的方法
    • 获取Url携带的地址参数
    • 金额以元和万元为单位
    • 隐藏证件号
    • 用户姓名脱敏
    • 账号4位一空格
    • 字符全局替换
  • 数据验证
    • 手机号验证
    • 姓名校验
    • 密码必须为8-18位数,且包含大小写字母和特殊符号
    • 身份证号完整校验
    • 只能输入数字和字母
    • 校验特殊字符

数据过滤

手机号码隐藏中间4位

//手机号码隐藏中间4位
phoneHideMiddle(val) {
  if (val) {
    return `${val.substring(03)}****${val.substring(val.length - 4)}`
  }
  else {
    return "";
  }
}

保留两位小数

//保留两位小数
keepTwoNum(val) {
  val = Number(val);
  return val.toFixed(2);
},

每三位逗号隔开,后面补两位小数,多用于金额数字

//每三位逗号隔开,后面补两位小数,多用于金额数字
floatThree(value) {
  // console.log(value)
  value = "" + value;
  if (!value) return '0.00';

  // var intPart = Number(value).toFixed(0); //获取整数部分
  var intPart = parseInt(Number(value));//获取整数部分
  // console.log('intPart',intPart)
  var intPartFormat = intPart.toString().replace(/(d)(?=(?:d{3})+$)/g'$1,'); //将整数部分逢三一断
  // console.log('intPartFormat',intPartFormat)

  var floatPart = ".00"//预定义小数部分
  var value2Array = value.split(".");

  //=2表示数据有小数位
  if (value2Array.length == 2) {
    floatPart = value2Array[1].toString(); //拿到小数部分
    // console.log('floatPart',floatPart)
    if (floatPart.length == 1) { //补0,实际上用不着
      return intPartFormat + "." + floatPart + '0';
    } else {
      return intPartFormat + "." + floatPart;
    }

  } else {
    return intPartFormat + floatPart;
  }
},

银行尾号四位数

//银行尾号四位数
bankCardNumLastFour(val) {
  // val = Number(val);
  if (val) {
    return val.substring(val.length - 4);
  }
},

数字金额转换为大写人民币汉字的方法

//数字金额转换为大写人民币汉字的方法
convertCurrency(money) {
  //汉字的数字
  var cnNums = new Array('零''壹''贰''叁''肆''伍''陆''柒''捌''玖');
  //基本单位
  var cnIntRadice = new Array('''拾''佰''仟');
  //对应整数部分扩展单位
  var cnIntUnits = new Array('''万''亿''兆');
  //对应小数部分单位
  var cnDecUnits = new Array('角''分''毫''厘');
  //整数金额时后面跟的字符
  var cnInteger = '整';
  //整型完以后的单位
  var cnIntLast = '元';
  //最大处理的数字
  var maxNum = 999999999999999.9999;
  //金额整数部分
  var integerNum;
  //金额小数部分
  var decimalNum;
  //输出的中文金额字符串
  var chineseStr = '';
  //分离金额后用的数组,预定义
  var parts;
  if (money == '') { return ''; }
  money = parseFloat(money);
  if (money >= maxNum) {
    //超出最大处理数字
    return '';
  }
  if (money == 0) {
    chineseStr = cnNums[0] + cnIntLast + cnInteger;
    return chineseStr;
  }
  //转换为字符串
  money = money.toString();
  if (money.indexOf('.') == -1) {
    integerNum = money;
    decimalNum = '';
  } else {
    parts = money.split('.');
    integerNum = parts[0];
    decimalNum = parts[1].substr(04);
  }
  //获取整型部分转换
  if (parseInt(integerNum, 10) > 0) {
    var zeroCount = 0;
    var IntLen = integerNum.length;
    for (var i = 0; i       var n = integerNum.substr(i, 1);
      var p = IntLen - i - 1;
      var q = p / 4;
      var m = p % 4;
      if (n == '0') {
        zeroCount++;
      } else {
        if (zeroCount > 0) {
          chineseStr += cnNums[0];
        }
        //归零
        zeroCount = 0;
        chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
      }
      if (m == 0 && zeroCount 4) {
        chineseStr += cnIntUnits[q];
      }
    }
    chineseStr += cnIntLast;
  }
  //小数部分
  if (decimalNum != '') {
    var decLen = decimalNum.length;
    for (var i = 0; i       var n = decimalNum.substr(i, 1);
      if (n != '0') {
        chineseStr += cnNums[Number(n)] + cnDecUnits[i];
      }
    }
  }
  if (chineseStr == '') {
    chineseStr += cnNums[0] + cnIntLast + cnInteger;
  } else if (decimalNum == '') {
    chineseStr += cnInteger;
  }
  return chineseStr;
},

获取Url携带的地址参数

//获取Url携带的地址参数
GetQueryString(name) {
  //index.html?token=9b68dd98306327bf&action=2
  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
  if (window.location.search != "") {
    var r = window.location.search.substr(1).match(reg);
  } else {
    if (window.location.hash.indexOf("?") > 0) {
      var tmp = window.location.hash.split("?");
      var r = tmp[1].match(reg);
    } else {
      var r = null;
    }
  }
  if (r != null) {
    return decodeURI(r[2]);
  }
  return null;
},

金额以元和万元为单位

//金额以元和万元为单位
moneyConvert(num) {
  var newNum = Number(num);
  if (10000     return (newNum / 10000) + '万元'
  } else {
    return newNum + '元'
  }
},

隐藏证件号

//隐藏证件号
certIdHide(val) {
  if (val) {
    var certId = val.substring(01) + '****************' + val.substring(val.length - 1)
    return certId
  }
},

用户姓名脱敏

//用户姓名脱敏
userNameHide(val) {
  if (val) {
    let name;
    if (val.length 3) {
      name = '*' + val.substring(val.length - 1)
      return name
    } else {
      name = val.substring(01) + '*' + val.substring(val.length - 1)
      return name
    }
  }
},

账号4位一空格

//账号4位一空格
accountNumberSpace(val) {
  if (val) {
    return val.replace(/s/g"")
      .replace(/D/g"")
      .replace(/(d{4})(?=d)/g"$1 ");
  }
}

字符全局替换

//字符全局替换
res.data.content = res.data.content.replace(/')

数据验证

手机号验证

// 手机号验证
isvalidPhone(str) {
  const reg = /^1d{10}$/
  return reg.test(str)
},

姓名校验

//姓名校验
isUserName(name) {
  if (name && name.length > 1) {
    const reg = name.match(/^[u4e00-u9fa5]+$/)
    return Boolean(reg)
  }
  return false
},

密码必须为8-18位数,且包含大小写字母和特殊符号

//密码必须为8-18位数,且包含大小写字母和特殊符号
/^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[!~@#$%^&*,.])[0-9a-zA-Z!~@#$%^&*,\.]{8,18}$/

身份证号完整校验

//   * 身份证号完整校验
// * ***/
isvalidateIdnumber(value) {
  if (value.length == 18) {
    var Errors = new Array(
      "验证通过!",
      "身份证号码位数不对!",
      "身份证号码出生日期超出范围或含有非法字符!",
      "身份证号码校验错误!",
      "身份证地区非法!"
    );
    var area = {
      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"国外"
    };
    //身份证号码  idcard
    var Y; //为身份证号码所有数字经过特定算法以后对11取余所得到的数值
    var JYM; //固定数值 校验码的计算中会用到
    var S; //身份证号码所有数字经过特定算法以后所得到的值
    var M; //校验位数值
    var idcard_array = value.split("");
    var ereg;
    //console.log(idcard_array);
    //地区检验
    if (area[parseInt(value.substr(02))] == null) {
      // $.fn.validatebox.defaults.rules.IDNumber.message = Errors[4];
      console.log(Errors[4]);
      return false;
    }


    if (parseInt(value.substr(64)) % 4 == 0 || (parseInt(value.substr(64)) % 100 == 0 && parseInt(value.substr(64)) % 4 == 0)) {
      ereg = /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;
      //闰年出生日期的合法性正则表达式
    } else {
      ereg = /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;
      //平年出生日期的合法性正则表达式
    }
    if (ereg.test(value)) { //测试出生日期的合法性
      //计算校验位
      S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 +
        (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 +
        (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 +
        (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 +
        (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 +
        (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 +
        (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 +
        parseInt(idcard_array[7]) * 1 +
        parseInt(idcard_array[8]) * 6 +
        parseInt(idcard_array[9]) * 3;
      Y = S % 11;
      M = "F";
      JYM = "10X98765432";
      M = JYM.substr(Y, 1); //判断校验位 身份证最后一位为校验位 如果身份证号码正确 则最后一位会与M值相同
      if (M == idcard_array[17]) {
        return true;
      } else {
        console.log(Errors[3]);
        return false;
      }
    } else {
      console.log(Errors[3]);
      return false;
    }
  } else {
    console.log("身份证号码长度不对");
    return false;
  }
},

只能输入数字和字母

//只能输入数字和字母
isvalidateLetterAndNum(str) {
  const reg = /^[0-9a-zA-Z]+$/;
  console.log(reg.test(str));
  return reg.test(str)
},

校验特殊字符

// 校验特殊字符
isSpecialChars(str) {
  var regEn = /[`~!@#$%^&*()_+?:"{},./;'[]]/im;
  var regCn = /[·!#¥(——):;“”‘、,|《。》?、【】[]]/im;
  console.log(regEn.test(str))
  if (regEn.test(str) || regCn.test(str)) {
    return false
  } else {
    return true
  }
}

-End-

0

评论0

请先
D5渲染器电影效果调色LUT预设8款
D5渲染器电影效果调色LUT预设8款
6分钟前 有人购买 去瞅瞅看

社交账号快速登录

微信扫一扫关注
扫码关注后会自动登录网站