⼿机号中间4位隐藏处理,,⾦额显⽰处理
提供⼀些⽇常开发中,实⽤得代码⽚段。欢迎⼤家补充!
1、⼿机号隐藏中间4位
//⼿机号脱敏
function mobile(data) {
place(/(\d{3})\d{4}(\d{4})/, '$1****$2');
}
2、证件号脱敏,包括但不限于⾝份证
//⾝份证脱敏 -- 1
function idCard(data) {
place(/(\d{4})\d*([0-9xX]{4})/, "$1******$2");
}
//⾝份证脱敏 -- 2
function idCard(data) {
String().length == 18) {
return data.slice(0,2) + '****************' + data.slice(16,18)
} else String().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;//⾦额
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+" : Month()+1,                //⽉份
"d+" : Date(),                    //⽇
"H+" : Hours(),                  //⼩时
"m+" : Minutes(),                //分
"s+" : Seconds(),                //秒
"S"  : Milliseconds()            //毫秒
};
if(/(y+)/.test(fmt))
place(RegExp.$1, (FullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)
if(new RegExp("("+ k +")").test(fmt))
substring和slicefmt = place(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 = FullYear();
var monthBirth = Month() + 1;
var dayBirth = Date();
var myDate = new Date();
var monthNow = Month() + 1;
var dayNow = Date();
var age = FullYear() - 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 (!st(url)) {
throw new Error("传⼊参数不合法,不是标准的⽂件链接");
} else {
let xhr = new XMLHttpRequest();
xhr.open('get', url, true);
xhr.setRequestHeader('Content-Type', `application/${type}`);
if (this.status == 200) {
//接受⼆进制⽂件流
var blob = sponse;
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 = ateElement('a');
let href = blob;
if (typeof blob == 'string') {
downloadElement.target = '_blank';
} else {
href = ateObjectURL(blob); //创建下载的链接
}
downloadElement.href = href;
downloadElement.download = tagFileName + '.' + fileType; //下载后⽂件名  document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
veChild(downloadElement); //下载完成移除元素
if (typeof blob != 'string') {
vokeObjectURL(href); //释放掉blob对象
}
}