手机号中间4位隐藏处理,,金额显示处理
提供一些日常开发中,实用得代码片段。欢迎大家补充!
1、手机号隐藏中间4位
//手机号脱敏 function mobile(data) { return data.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2'); }
2、证件号脱敏,包括但不限于身份证
//身份证脱敏 -- 1 function idCard(data) { return data.replace(/(\d{4})\d*([0-9xX]{4})/, "$1******$2"); } //身份证脱敏 -- 2 function idCard(data) { if(data.toString().length == 18) { return data.slice(0,2) + '****************' + data.slice(16,18) } else if(data.toString().length == 15) { return data.slice(0,2) + '***********' + data.slice(13,15) } } //证件脱敏,data->数据,beforeLen->前置位数,afterLen->后置位数 function newIdCard(data, beforeLen, afterLen) { let dataLenth = data.length - beforeLen - afterLen let middleStr = '' for (let i = 0; i < dataLenth; i++) { middleStr += '*' } return data.slice(0, 2) + middleStr + data.substring(data.length - afterLen) }
3、金额处理,经常会遇到数字相乘或相除得问题,但结果往往不是我们想要得,例如12.32 * 7 结果是86.24000000000001;
为了避免此种情况得发生,以万元为单位提供一种方法。详细解释请查看https://www.cnblogs.com/weiqt/articles/2642393.html
//金额 export function money(num){ return num >= 10000 ? parseFloat(num) * 10000/100000000+'万' : num }
4、根据需要返回不同类型得日期
//格式化时间 export function dateFormat(time,fmt){ return fnDateFormat(time,fmt) } export default function(time,fmt){ var fmt = fmt || 'yyyy-MM-dd HH:mm:ss'; var time = time ? new Date(time) : new Date(); var o = { "M+" : time.getMonth()+1, //月份 "d+" : time.getDate(), //日 "H+" : time.getHours(), //小时 "m+" : time.getMinutes(), //分 "s+" : time.getSeconds(), //秒 "S" : time.getMilliseconds() //毫秒 }; if(/(y+)/.test(fmt)) fmt=fmt.replace(RegExp.$1, (time.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o) if(new RegExp("("+ k +")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); return fmt; }
5、通过身份证获取年龄、性别、生日
//通过身份证获取年龄 & 生日 const idCardBirthday = function(data){ //获取出生年月日 var year = data.substring(6,10); var month = data.substring(10,12); var day = data.substring(12,14); return `${year}-${month}-${day}` } //通过身份证获取性别 const idCardGender = function(data){ //1 男 2 女 return parseInt(data.slice(-2, -1)) % 2 == 1 ? 1 : 2; } const birthdayAge = function(str, type) { var type = type || 'year'; //补零 let zeroize = function(value) { if (value < 10) { value = '0' + value } return value } var birthDay = new Date(str) var yearBirth = birthDay.getFullYear(); var monthBirth = birthDay.getMonth() + 1; var dayBirth = birthDay.getDate(); var myDate = new Date(); var monthNow = myDate.getMonth() + 1; var dayNow = myDate.getDate(); var age = myDate.getFullYear() - yearBirth; if (monthNow < monthBirth || (monthNow == monthBirth && dayNow < dayBirth)) { age--; } return age } export default { idCardBirthday , idCardGender, birthdayAge }
6、常用正则表达式
//手机号 const mobile = /^[1]+\d{10}$/; //身份证 //const idCard = /(^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$) | (^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/; //18位 & 15位 const idCard = /^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/ //护照 const passport = /^[0-9A-Z]{7,11}$/ //姓名 不包含特殊字符 //const name = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>《》/?~!@#¥……&*()——|{}【】‘;:”“'。,、?+0-9]"); const name = /(^([a-zA-Z]+\s)*[a-zA-Z]+$)|(^[\u4E00-\u9FA5]+$)/; //字母 const letter = /^[A-Za-z]+$/ //网址 const domain = /(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/; //邮箱 const email = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/ //纳税号 const corporationTax = /^[0-9A-Z]{15,20}$/
7、文件下载,针对PDF
/** * 文件链接转文件流下载--主要针对pdf 解决谷歌浏览器a标签下载pdf直接打开的问题 * @param url :文件链接 * @param fileName :文件名; * @param type :文件类型; */ export function fileLinkToStreamDownload(url, fileName, type) { let reg = /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\/])+$/; if (!reg.test(url)) { throw new Error("传入参数不合法,不是标准的文件链接"); } else { let xhr = new XMLHttpRequest(); xhr.open('get', url, true); xhr.setRequestHeader('Content-Type', `application/${type}`); xhr.responseType = "blob"; xhr.onload = function () { if (this.status == 200) { //接受二进制文件流 var blob = this.response; downloadExportFile(blob, fileName, type) } } xhr.send(); } } /** *下载导出文件 * @param blob :返回数据的blob对象或链接 * @param tagFileName :下载后文件名标记 * @param fileType :文件类 word(docx) excel(xlsx) ppt等 */ function downloadExportFile(blob, tagFileName, fileType) { let downloadElement = document.createElement('a'); let href = blob; if (typeof blob == 'string') { downloadElement.target = '_blank'; } else { href = window.URL.createObjectURL(blob); //创建下载的链接 } downloadElement.href = href; downloadElement.download = tagFileName + '.' + fileType; //下载后文件名 document.body.appendChild(downloadElement); downloadElement.click(); //点击下载 document.body.removeChild(downloadElement); //下载完成移除元素 if (typeof blob != 'string') { window.URL.revokeObjectURL(href); //释放掉blob对象 } }
认真做事儿,踏实做人