/**
|
* 2018-3-9
|
* 这是一个用于存放正则表达式和一些验证方法的插件
|
* 除了存放了目前常用的正则之外,还根据这些正则封装了对应的验证方法
|
*/
|
export default {
|
formatMoney(str) {
|
// 如果未空的话,默认采用0.00
|
if (this.checkValEmpty(str)) {
|
return '0.00';
|
}
|
// 金额格式化
|
str = str + '';
|
let newStr = '';
|
let count = 0;
|
if (str.indexOf('.') === -1) {
|
for (let i = str.length - 1; i >= 0; i--) {
|
if (count % 3 === 0 && count !== 0) {
|
newStr = str.charAt(i) + ',' + newStr;
|
} else {
|
newStr = str.charAt(i) + newStr;
|
}
|
count++;
|
}
|
str = newStr + '.00'; // 自动补小数点后两位
|
return str;
|
} else {
|
for (let i = str.indexOf('.') - 1; i >= 0; i--) {
|
if (count % 3 === 0 && count !== 0) {
|
newStr = str.charAt(i) + ',' + newStr;
|
} else {
|
newStr = str.charAt(i) + newStr; // 逐个字符相接起来
|
}
|
count++;
|
}
|
str = newStr + (str + '00').substr((str + '00').indexOf('.'), 3);
|
return str;
|
}
|
},
|
// 身份证中间 隐藏
|
cardIDHide(cardid) {
|
// 身份证 中间用* 显示
|
if (cardid) {
|
return cardid.replace(/^(.{6})(?:\d+)(.{4})$/, '$1****$2');
|
} else {
|
return '';
|
}
|
},
|
checkEmail(email) {
|
// 验证邮箱格式
|
let reg = /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/;
|
return reg.test(email);
|
},
|
checkVerifyCode(code) {
|
// 验证验证码格式
|
let reg = /^\d{6}$/;
|
return reg.test(code);
|
},
|
checkDynamicCode(code) {
|
// 验证邀请码格式
|
let reg = /^[A-Za-z0-9]{4}$/;
|
return reg.test(code);
|
},
|
// password check
|
checkPassword(password) {
|
// 验证密码格式
|
let reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/;
|
return reg.test(password);
|
},
|
// name check
|
checkName(name) {
|
// 验证用户名格式
|
let reg = /^[\u4e00-\u9fa5]{2,17}$/;
|
return reg.test(name);
|
},
|
// 账户名称的正则表达式
|
checkUsername(name) {
|
let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{4,16}$/;
|
return reg.test(name);
|
},
|
// 银行卡的正则表达式
|
checkBankNo(No) {
|
let reg = /^([1-9]{1})(\d{15}|\d{18})$/;
|
return reg.test(No);
|
},
|
// 统一验证
|
checkCommonField(name) {
|
let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{4,30}$/;
|
return reg.test(name);
|
},
|
// idCard check
|
checkIDCard(idCard) {
|
// 验证身份证格式
|
if (idCard.length === 18) {
|
let reg = /^\d{17}[\d|X|x]$/;
|
return reg.test(idCard);
|
} else if (idCard.length === 15) {
|
let reg = /^\d{15}$/;
|
return reg.test(idCard);
|
} else {
|
return false;
|
}
|
},
|
checkValEmpty(str) {
|
// 验证是否为空
|
if (
|
str === undefined ||
|
str === null ||
|
str.length <= 0 ||
|
str === 'undefined'
|
) {
|
return true;
|
} else {
|
return false;
|
}
|
},
|
// 验证佣金输入金额
|
checkCommission(commission) {
|
// 小于100且后面可以带4个小数点
|
let reg = /^100$|^(\d|[1-9]\d)(\.\d{1,4})*$/;
|
//一亿以内,保留四位小数
|
// /^([1-9]\d{0,7}|0)(\.\d{1,4})?$/
|
// 如果通过的话,那么判断小数点的前几位数字
|
return reg.test(commission);
|
},
|
// 验证渠道编号是否符合规则--4-8位以内数字+字母,区分大小写
|
checkChannelNo(channelNo) {
|
let reg = /^[\w\d]{4,8}$/;
|
return reg.test(channelNo);
|
},
|
//验证是否包含空格
|
checkSpace(val) {
|
let reg = /^\s+$/;
|
if (reg.test(val)) {
|
return true;
|
} else {
|
return false;
|
}
|
},
|
//将发送请求中的参数格式化,如果为空则转为null
|
formatReq(obj) {
|
for (let i in obj) {
|
let item = obj[i];
|
if (item === null) continue;
|
if (
|
item === undefined ||
|
item === '' ||
|
item === 'undefined' ||
|
item.length <= 0 ||
|
JSON.stringify(item) == '{}'
|
) {
|
obj[i] = null;
|
}
|
}
|
return obj;
|
},
|
// 中文正则表达式
|
checkChineseCharacter(str) {
|
let reg = /^[\u4e00-\u9fa5]{2,}$/;
|
return reg.test(str);
|
},
|
cardIDHide(cardid) {
|
// 身份证 中间用* 显示
|
if (cardid) {
|
return cardid.replace(/^(.{6})(?:\d+)(.{4})$/, '$1****$2');
|
} else {
|
return '';
|
}
|
},
|
checkPhone(phone) {
|
// 验证电话号码格式
|
let reg = /^1[3456789]\d{9}$/;
|
return reg.test(phone);
|
},
|
checkEmail(email) {
|
// 验证邮箱格式
|
let reg = /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/;
|
return reg.test(email);
|
},
|
checkVerifyCode(code) {
|
// 验证验证码格式
|
let reg = /^\d{6}$/;
|
return reg.test(code);
|
},
|
checkDynamicCode(code) {
|
// 验证邀请码格式
|
let reg = /^[A-Za-z0-9]{4}$/;
|
return reg.test(code);
|
},
|
// password check
|
checkPassword(password) {
|
// 验证密码格式
|
let reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/;
|
return reg.test(password);
|
},
|
// name check
|
checkName(name) {
|
// 验证用户名格式
|
let reg = /^[\u4e00-\u9fa5]{2,17}$/;
|
return reg.test(name);
|
},
|
// 账户名称的正则表达式
|
checkUsername(name) {
|
let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{4,16}$/;
|
return reg.test(name);
|
},
|
// 统一验证
|
checkCommonField(name) {
|
let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{4,30}$/;
|
return reg.test(name);
|
},
|
// idCard check
|
checkIDCard(idCard) {
|
// 验证身份证格式
|
if (idCard.length === 18) {
|
let reg = /^\d{17}[\d|X|x]$/;
|
return reg.test(idCard);
|
} else if (idCard.length === 15) {
|
let reg = /^\d{15}$/;
|
return reg.test(idCard);
|
} else {
|
return false;
|
}
|
},
|
checkValEmpty(str) {
|
// 验证是否为空
|
if (
|
str === undefined ||
|
str === null ||
|
str.length <= 0 ||
|
str === 'undefined'
|
) {
|
return true;
|
} else {
|
return false;
|
}
|
},
|
// 验证佣金输入金额
|
checkCommission(commission) {
|
// 小于100且后面可以带4个小数点
|
let reg = /^100$|^(\d|[1-9]\d)(\.\d{1,4})*$/;
|
//一亿以内,保留四位小数
|
// /^([1-9]\d{0,7}|0)(\.\d{1,4})?$/
|
// 如果通过的话,那么判断小数点的前几位数字
|
return reg.test(commission);
|
},
|
// 验证渠道编号是否符合规则--4-8位以内数字+字母,区分大小写
|
checkChannelNo(channelNo) {
|
let reg = /^[\w\d]{4,8}$/;
|
return reg.test(channelNo);
|
},
|
//验证是否包含空格
|
checkSpace(val) {
|
let reg = /^\s+$/;
|
if (reg.test(val)) {
|
return true;
|
} else {
|
return false;
|
}
|
},
|
//电话脱敏
|
//姓名脱敏
|
// 自定义组件的整数的验证
|
checkCustomNumberField(number) {
|
let reg = /^\d{1,9}$/;
|
return reg.test(number);
|
},
|
// new password check (新版的密码规则,可以是纯数字, 但是必须包含数字,只能是数字或者数字+字母,6到16位)
|
checkNewPassword(password) {
|
let reg = /^(?=[a-zA-Z0-9]*[0-9])[a-zA-Z0-9]{6,16}$/;
|
return reg.test(password);
|
},
|
debounce(method, delay) {
|
let timer = null;
|
return function () {
|
let context = this,
|
args = arguments;
|
|
clearTimeout(timer);
|
timer = setTimeout(function () {
|
method.apply(context, args);
|
}, delay);
|
}
|
},
|
//银行卡验证
|
bankCard(iccid){
|
let initCard = iccid;
|
var s1 = 0,
|
s2 = 0;
|
iccid = iccid.substring(0, iccid.length - 1);
|
var reverse = '';
|
for (var i = iccid.length; i > 0; i--) {
|
reverse += iccid.charAt(i - 1);
|
}
|
for (i = 0; i < reverse.length; i++) {
|
var digit = parseInt(reverse.charAt(i), 10);
|
if (i % 2 != 0) {
|
// this is for odd digits, they are 1-indexed in the
|
// algorithm
|
s1 += digit;
|
} else {
|
// add 2 * digit for 0-4, add 2 * digit - 9 for 5-9
|
s2 += 2 * digit;
|
if (digit >= 5) {
|
s2 -= 9;
|
}
|
}
|
}
|
var sum = 10 - ((s1 + s2) % 10);
|
if (sum === 10) {
|
sum = 0;
|
}
|
return iccid + sum == initCard;
|
}
|
};
|