日常开发中的一些js处理数据的方法,包括对数据的过滤,以及对数据的验证

目录

手机号码隐藏中间4位

保留两位小数

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

银行尾号四位数

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

获取Url携带的地址参数

金额以元和万元为单位

隐藏证件号

用户姓名脱敏

账号4位一空格

字符全局替换

手机号验证

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

身份证号完整校验

只能输入数字和字母

校验特殊字符


手机号码隐藏中间4位

//手机号码隐藏中间4位
phoneHideMiddle(val) {
  if (val) {
    return `${val.substring(0, 3)}****${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(0, 4);
  }
  //获取整型部分转换
  if (parseInt(integerNum, 10) > 0) {
    var zeroCount = 0;
    var IntLen = integerNum.length;
    for (var i = 0; i < IntLen; 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 < decLen; 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 <= newNum) {
    return (newNum / 10000) + '万元'
  } else {
    return newNum + '元'
  }
},

隐藏证件号

//隐藏证件号
certIdHide(val) {
  if (val) {
    var certId = val.substring(0, 1) + '****************' + 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(0, 1) + '*' + 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(/\<img/gi, '<img style="max-width:100%;height:auto" ')

手机号验证

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

密码必须为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(0, 2))] == null) {
      // $.fn.validatebox.defaults.rules.IDNumber.message = Errors[4];
      console.log(Errors[4]);
      return false;
    }


    if (parseInt(value.substr(6, 4)) % 4 == 0 || (parseInt(value.substr(6, 4)) % 100 == 0 && parseInt(value.substr(6, 4)) % 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)
},

校验特殊字符

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值