前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >常用正则表达式

常用正则表达式

作者头像
网罗开发
发布2021-07-21 17:21:24
1.8K0
发布2021-07-21 17:21:24
举报
文章被收录于专栏:网罗开发

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

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

数据过滤

手机号码隐藏中间4位

代码语言:javascript
复制
//手机号码隐藏中间4位
phoneHideMiddle(val) {
  if (val) {
    return `${val.substring(0, 3)}****${val.substring(val.length - 4)}`
  }
  else {
    return "";
  }
}

保留两位小数

代码语言:javascript
复制
//保留两位小数
keepTwoNum(val) {
  val = Number(val);
  return val.toFixed(2);
},

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

代码语言:javascript
复制
//每三位逗号隔开,后面补两位小数,多用于金额数字
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;
  }
},

银行尾号四位数

代码语言:javascript
复制
//银行尾号四位数
bankCardNumLastFour(val) {
  // val = Number(val);
  if (val) {
    return val.substring(val.length - 4);
  }
},

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

代码语言:javascript
复制
//数字金额转换为大写人民币汉字的方法
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携带的地址参数

代码语言:javascript
复制
//获取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;
},

金额以元和万元为单位

代码语言:javascript
复制
//金额以元和万元为单位
moneyConvert(num) {
  var newNum = Number(num);
  if (10000 <= newNum) {
    return (newNum / 10000) + '万元'
  } else {
    return newNum + '元'
  }
},

隐藏证件号

代码语言:javascript
复制
//隐藏证件号
certIdHide(val) {
  if (val) {
    var certId = val.substring(0, 1) + '****************' + val.substring(val.length - 1)
    return certId
  }
},

用户姓名脱敏

代码语言:javascript
复制
//用户姓名脱敏
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位一空格

代码语言:javascript
复制
//账号4位一空格
accountNumberSpace(val) {
  if (val) {
    return val.replace(/\s/g, "")
      .replace(/\D/g, "")
      .replace(/(\d{4})(?=\d)/g, "$1 ");
  }
}

字符全局替换

代码语言:javascript
复制
//字符全局替换
res.data.content = res.data.content.replace(/\<img/gi, '<img style="max-width:100%;height:auto" ')

数据验证

手机号验证

代码语言:javascript
复制
// 手机号验证
isvalidPhone(str) {
  const reg = /^1\d{10}$/
  return reg.test(str)
},

姓名校验

代码语言:javascript
复制
//姓名校验
isUserName(name) {
  if (name && name.length > 1) {
    const reg = name.match(/^[\u4e00-\u9fa5]+$/)
    return Boolean(reg)
  }
  return false
},

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

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

身份证号完整校验

代码语言:javascript
复制
//   * 身份证号完整校验
// * ***/
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;
  }
},

只能输入数字和字母

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

校验特殊字符

代码语言:javascript
复制
// 校验特殊字符
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-

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网罗开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据过滤
    • 手机号码隐藏中间4位
      • 保留两位小数
        • 每三位逗号隔开,后面补两位小数,多用于金额数字
          • 银行尾号四位数
            • 数字金额转换为大写人民币汉字的方法
              • 获取Url携带的地址参数
                • 金额以元和万元为单位
                  • 隐藏证件号
                    • 用户姓名脱敏
                      • 账号4位一空格
                        • 字符全局替换
                        • 数据验证
                          • 手机号验证
                            • 姓名校验
                              • 密码必须为8-18位数,且包含大小写字母和特殊符号
                                • 身份证号完整校验
                                  • 只能输入数字和字母
                                    • 校验特殊字符
                                    相关产品与服务
                                    访问管理
                                    访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档