聊一聊常用正则表达式

本文转载自微信公众号「网罗开发」,作者誰在花里胡哨。转载本文请联系网罗开发公众号。

创新互联专注于做网站、网站建设、网页设计、网站制作、网站开发。公司秉持“客户至上,用心服务”的宗旨,从客户的利益和观点出发,让客户在网络营销中找到自己的驻足之地。尊重和关怀每一位客户,用严谨的态度对待客户,用专业的服务创造价值,成为客户值得信赖的朋友,为客户解除后顾之忧。

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

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

数据过滤

手机号码隐藏中间4位

 
 
 
  1. //手机号码隐藏中间4位 
  2. phoneHideMiddle(val) { 
  3.   if (val) { 
  4.     return `${val.substring(0, 3)}****${val.substring(val.length - 4)}` 
  5.   } 
  6.   else { 
  7.     return ""; 
  8.   } 

保留两位小数

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

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

 
 
 
  1. //每三位逗号隔开,后面补两位小数,多用于金额数字 
  2. floatThree(value) { 
  3.   // console.log(value) 
  4.   value = "" + value; 
  5.   if (!value) return '0.00'; 
  6.  
  7.   // var intPart = Number(value).toFixed(0); //获取整数部分 
  8.   var intPart = parseInt(Number(value));//获取整数部分 
  9.   // console.log('intPart',intPart) 
  10.   var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); //将整数部分逢三一断 
  11.   // console.log('intPartFormat',intPartFormat) 
  12.  
  13.   var floatPart = ".00"; //预定义小数部分 
  14.   var value2Array = value.split("."); 
  15.  
  16.   //=2表示数据有小数位 
  17.   if (value2Array.length == 2) { 
  18.     floatPart = value2Array[1].toString(); //拿到小数部分 
  19.     // console.log('floatPart',floatPart) 
  20.     if (floatPart.length == 1) { //补0,实际上用不着 
  21.       return intPartFormat + "." + floatPart + '0'; 
  22.     } else { 
  23.       return intPartFormat + "." + floatPart; 
  24.     } 
  25.  
  26.   } else { 
  27.     return intPartFormat + floatPart; 
  28.   } 
  29. }, 

银行尾号四位数

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

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

 
 
 
  1. //数字金额转换为大写人民币汉字的方法 
  2. convertCurrency(money) { 
  3.   //汉字的数字 
  4.   var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'); 
  5.   //基本单位 
  6.   var cnIntRadice = new Array('', '拾', '佰', '仟'); 
  7.   //对应整数部分扩展单位 
  8.   var cnIntUnits = new Array('', '万', '亿', '兆'); 
  9.   //对应小数部分单位 
  10.   var cnDecUnits = new Array('角', '分', '毫', '厘'); 
  11.   //整数金额时后面跟的字符 
  12.   var cnInteger = '整'; 
  13.   //整型完以后的单位 
  14.   var cnIntLast = '元'; 
  15.   //最大处理的数字 
  16.   var maxNum = 999999999999999.9999; 
  17.   //金额整数部分 
  18.   var integerNum; 
  19.   //金额小数部分 
  20.   var decimalNum; 
  21.   //输出的中文金额字符串 
  22.   var chineseStr = ''; 
  23.   //分离金额后用的数组,预定义 
  24.   var parts; 
  25.   if (money == '') { return ''; } 
  26.   money = parseFloat(money); 
  27.   if (money >= maxNum) { 
  28.     //超出最大处理数字 
  29.     return ''; 
  30.   } 
  31.   if (money == 0) { 
  32.     chineseStr = cnNums[0] + cnIntLast + cnInteger; 
  33.     return chineseStr; 
  34.   } 
  35.   //转换为字符串 
  36.   money = money.toString(); 
  37.   if (money.indexOf('.') == -1) { 
  38.     integerNum = money; 
  39.     decimalNum = ''; 
  40.   } else { 
  41.     parts = money.split('.'); 
  42.     integerNum = parts[0]; 
  43.     decimalNum = parts[1].substr(0, 4); 
  44.   } 
  45.   //获取整型部分转换 
  46.   if (parseInt(integerNum, 10) > 0) { 
  47.     var zeroCount = 0; 
  48.     var IntLen = integerNum.length; 
  49.     for (var i = 0; i < IntLen; i++) { 
  50.       var n = integerNum.substr(i, 1); 
  51.       var p = IntLen - i - 1; 
  52.       var q = p / 4; 
  53.       var m = p % 4; 
  54.       if (n == '0') { 
  55.         zeroCount++; 
  56.       } else { 
  57.         if (zeroCount > 0) { 
  58.           chineseStr += cnNums[0]; 
  59.         } 
  60.         //归零 
  61.         zeroCount = 0; 
  62.         chineseStr += cnNums[parseInt(n)] + cnIntRadice[m]; 
  63.       } 
  64.       if (m == 0 && zeroCount < 4) { 
  65.         chineseStr += cnIntUnits[q]; 
  66.       } 
  67.     } 
  68.     chineseStr += cnIntLast; 
  69.   } 
  70.   //小数部分 
  71.   if (decimalNum != '') { 
  72.     var decLen = decimalNum.length; 
  73.     for (var i = 0; i < decLen; i++) { 
  74.       var n = decimalNum.substr(i, 1); 
  75.       if (n != '0') { 
  76.         chineseStr += cnNums[Number(n)] + cnDecUnits[i]; 
  77.       } 
  78.     } 
  79.   } 
  80.   if (chineseStr == '') { 
  81.     chineseStr += cnNums[0] + cnIntLast + cnInteger; 
  82.   } else if (decimalNum == '') { 
  83.     chineseStr += cnInteger; 
  84.   } 
  85.   return chineseStr; 
  86. }, 

获取Url携带的地址参数

 
 
 
  1. //获取Url携带的地址参数 
  2. GetQueryString(name) { 
  3.   //index.html?token=9b68dd98306327bf&action=2 
  4.   var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); 
  5.   if (window.location.search != "") { 
  6.     var r = window.location.search.substr(1).match(reg); 
  7.   } else { 
  8.     if (window.location.hash.indexOf("?") > 0) { 
  9.       var tmp = window.location.hash.split("?"); 
  10.       var r = tmp[1].match(reg); 
  11.     } else { 
  12.       var r = null; 
  13.     } 
  14.   } 
  15.   if (r != null) { 
  16.     return decodeURI(r[2]); 
  17.   } 
  18.   return null; 
  19. }, 

金额以元和万元为单位

 
 
 
  1. //金额以元和万元为单位 
  2. moneyConvert(num) { 
  3.   var newNum = Number(num); 
  4.   if (10000 <= newNum) { 
  5.     return (newNum / 10000) + '万元' 
  6.   } else { 
  7.     return newNum + '元' 
  8.   } 
  9. }, 

隐藏证件号

 
 
 
  1. //隐藏证件号 
  2. certIdHide(val) { 
  3.   if (val) { 
  4.     var certId = val.substring(0, 1) + '****************' + val.substring(val.length - 1) 
  5.     return certId 
  6.   } 
  7. }, 

用户姓名脱敏

 
 
 
  1. //用户姓名脱敏 
  2. userNameHide(val) { 
  3.   if (val) { 
  4.     let name; 
  5.     if (val.length < 3) { 
  6.       name = '*' + val.substring(val.length - 1) 
  7.       return name 
  8.     } else { 
  9.       name = val.substring(0, 1) + '*' + val.substring(val.length - 1) 
  10.       return name 
  11.     } 
  12.   } 
  13. }, 

账号4位一空格

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

字符全局替换

 
 
 
  1. //字符全局替换 
  2. res.data.content = res.data.content.replace(/\

数据验证

手机号验证

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

姓名校验

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

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

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

身份证号完整校验

 
 
 
  1. //   * 身份证号完整校验 
  2. // * ***/ 
  3. isvalidateIdnumber(value) { 
  4.   if (value.length == 18) { 
  5.     var Errors = new Array( 
  6.       "验证通过!", 
  7.       "身份证号码位数不对!", 
  8.       "身份证号码出生日期超出范围或含有非法字符!", 
  9.       "身份证号码校验错误!", 
  10.       "身份证地区非法!" 
  11.     ); 
  12.     var area = { 
  13.       11: "北京", 
  14.       12: "天津", 
  15.       13: "河北", 
  16.       14: "山西", 
  17.       15: "内蒙古", 
  18.       21: "辽宁", 
  19.       22: "吉林", 
  20.       23: "黑龙江", 
  21.       31: "上海", 
  22.       32: "江苏", 
  23.       33: "浙江", 
  24.       34: "安徽", 
  25.       35: "福建", 
  26.       36: "江西", 
  27.       37: "山东", 
  28.       41: "河南", 
  29.       42: "湖北", 
  30.       43: "湖南", 
  31.       44: "广东", 
  32.       45: "广西", 
  33.       46: "海南", 
  34.       50: "重庆", 
  35.       51: "四川", 
  36.       52: "贵州", 
  37.       53: "云南", 
  38.       54: "西藏", 
  39.       61: "陕西", 
  40.       62: "甘肃", 
  41.       63: "青海", 
  42.       64: "宁夏", 
  43.       65: "新疆", 
  44.       71: "台湾", 
  45.       81: "香港", 
  46.       82: "澳门", 
  47.       91: "国外" 
  48.     }; 
  49.     //身份证号码  idcard 
  50.     var Y; //为身份证号码所有数字经过特定算法以后对11取余所得到的数值 
  51.     var JYM; //固定数值 校验码的计算中会用到 
  52.     var S; //身份证号码所有数字经过特定算法以后所得到的值 
  53.     var M; //校验位数值 
  54.     var idcard_array = value.split(""); 
  55.     var ereg; 
  56.     //console.log(idcard_array); 
  57.     //地区检验 
  58.     if (area[parseInt(value.substr(0, 2))] == null) { 
  59.       // $.fn.validatebox.defaults.rules.IDNumber.message = Errors[4]; 
  60.       console.log(Errors[4]); 
  61.       return false; 
  62.     } 
  63.  
  64.  
  65.     if (parseInt(value.substr(6, 4)) % 4 == 0 || (parseInt(value.substr(6, 4)) % 100 == 0 && parseInt(value.substr(6, 4)) % 4 == 0)) { 
  66.       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]$/; 
  67.       //闰年出生日期的合法性正则表达式 
  68.     } else { 
  69.       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]$/; 
  70.       //平年出生日期的合法性正则表达式 
  71.     } 
  72.     if (ereg.test(value)) { //测试出生日期的合法性 
  73.       //计算校验位 
  74.       S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + 
  75.         (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 + 
  76.         (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + 
  77.         (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 + 
  78.         (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + 
  79.         (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 + 
  80.         (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + 
  81.         parseInt(idcard_array[7]) * 1 + 
  82.         parseInt(idcard_array[8]) * 6 + 
  83.         parseInt(idcard_array[9]) * 3; 
  84.       Y = S % 11; 
  85.       M = "F"; 
  86.       JYM = "10X98765432"; 
  87.       M = JYM.substr(Y, 1); //判断校验位 身份证最后一位为校验位 如果身份证号码正确 则最后一位会与M值相同 
  88.       if (M == idcard_array[17]) { 
  89.         return true; 
  90.       } else { 
  91.         console.log(Errors[3]); 
  92.         return false; 
  93.       } 
  94.     } else { 
  95.       console.log(Errors[3]); 
  96.       return false; 
  97.     } 
  98.   } else { 
  99.     console.log("身份证号码长度不对"); 
  100.     return false; 
  101.   } 
  102. }, 

只能输入数字和字母

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

校验特殊字符

 
 
 
  1. // 校验特殊字符 
  2. isSpecialChars(str) { 
  3.   var regEn = /[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im; 
  4.   var regCn = /[·!#¥(——):;“”‘、,|《。》?、[\]]/im; 
  5.   console.log(regEn.test(str)) 
  6.   if (regEn.test(str) || regCn.test(str)) { 
  7.     return false 
  8.   } else { 
  9.     return true 
  10.   } 

本文标题:聊一聊常用正则表达式
文章分享:http://www.hantingmc.com/qtweb/news9/120559.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联