【从零开始搭建uniapp开发框架】(六)—— 正则表达式封装
正则表达式封装:在common文件夹下新增一个 js-regex.js 文件
js-regex源码:
/**
* 正则表达式的封装
*/
import base from '@/common/js-base.js';
import alert from '@/common/js-alert.js';
let regex = {
/**
* @description 检查注册用户名是否合法
*
this.$Regex_username -> this.sjuRegex.username
* @param {string} val 要检查的值
*/
username: function(val) {
let regex_s = /^[\u4E00-\u9FA5\·]+$/;;
if (regex_s.test(val)) {
return true;
} else {
return false;
}
},
/**
* @description 检查密码是否合法 - 8为长度,包含数字和字母
*
this.$Regex_password -> this.sjuRegex.password
* @param {string} val 要检查的值
*/
password: function(val) {
let regex_s = /^(?=.*?[a-z])(?=.*?[0-9]).{8,}$/;
if (regex_s.test(val)) {
return true;
} else {
return false;
}
},
/**
* @description 检查注册手机号是否合法
*
this.$Regex_phonenumber -> this.sjuRegex.phoneNumber
* @param {string} val 要检查的值
*/
phoneNumber: function(val) {
let regex_s = /^[1]([1-9])[0-9]{9}$/;
if (regex_s.test(val)) {
return true;
} else {
return false;
}
},
/**
* @description 检查身份证是否合法
*
this.$Regex_IDnumer -> this.sjuRegex.idCard
* @param {string} val 要检查的值
*/
idCard: function(val) {
let regex_s = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
if (regex_s.test(val)) {
return true;
} else {
return false;
}
},
/**
* @description 检查金额是否合法
* @param {Number} val 要检查的值
* this.$Regex_money -> this.sjuRegex.money
*/
money: function(val) {
let regex_s =
/(^[1-9](\d+)?(\.\d{1,2})?$)|(^[1-9]$)|(^\d\.[1-9]{1,2}$)|(^\d\.[0]{1}[1-9]{1}$|(^\d\.[1-9]{1}[0]{1}$)$)/;
if (regex_s.test(val)) {
return true;
} else {
return false;
}
},
/**
* @description 检查银行卡号是否合法
*
this.$Regex_Banknumber -> this.sjuRegex.bankNumber
* @param {Number} val 要检查的值
*/
bankNumber: function(str) {
let regex_s = /^([1-9]{1})(\d{11}|\d{12}|\d{13}|\d{14}|\d{15}|\d{16}|\d{17}|\d{18}|\d{19}|\d{20}|\d{21})$/;
if (regex_s.test(str)) {
return true;
} else {
return false;
}
},
/**
* @description 检查Email地址是否合法
*
this.$Regex_Email -> this.sjuRegex.Email
* @param {Number} val 要检查的值
*/
Email: function(str) {
let regex_s = /^\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}$/;
if (regex_s.test(str)) {
return true;
} else {
return false;
}
},
/**
* @description 检查税号是否合法
*
this.$Regex_TaxNum -> this.sjuRegex.TaxNum
* @param {Number} val 要检查的值
*/
TaxNum: function(str) {
let regex_s = /^[A-Z0-9]{15}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/;
if (regex_s.test(str)) {
return true;
} else {
return false;
}
},
/**
* @description 检查支付宝扫码的值
*
this.$Regex_zfbNumber -> this.sjuRegex.zfbNumber
* @param {Number} val 要检查的值
*/
zfbNumber: function(str) {
let regex_s = /^(2[5-9]|30)\d{14,22}$/;
if (regex_s.test(str)) {
return true;
} else {
return false;
}
},
/**
* @description 检查银联扫码的值
*
this.$Regex_ylNumber -> this.sjuRegex.ylNumber
* @param {Number} val 要检查的值
*/
ylNumber: function(str) {
let regex_s = /^62\\d{17}$/;
if (regex_s.test(str)) {
return true;
} else {
return false;
}
},
/**
* @description 多个属性值一起检查,有一个不合法,则返回false,并显示错误提示
* @param {array} arr 要检查数据的数组描述
*
参数格式:[{val:'属性值',type:'检查类型',msg:'错误提示'} ... ]
*
例如: [{val:'12',type:'bankNumber',msg:'xx不是银行卡号'},...]
*/
checkArray: function(arr) {
var msg = "";
var isNotPetch = true;
if (typeof(arr) == 'object') {
for (let item of arr) {
if (item.type == 'username') {
if (regex.username(item.val) == false) {
isNotPetch = false;
msg = item.msg;
}
} else if (item.type == 'password') {
if (regex.password(item.val) == false) {
isNotPetch = false;
msg = item.msg;
}
} else if (item.type == 'phoneNumber') {
if (regex.phoneNumber(item.val) == false) {
isNotPetch = false;
msg = item.msg;
}
} else if (item.type == 'idCard') {
if (regex.idCard(item.val) == false) {
isNotPetch = false;
msg = item.msg;
}
} else if (item.type == 'money') {
if (regex.money(item.val) == false) {
isNotPetch = false;
msg = item.msg;
}
} else if (item.type == 'bankNumber') {
if (regex.bankNumber(item.val) == false) {
isNotPetch = false;
msg = item.msg;
}
}else if (item.type == 'Email') {
if (regex.Email(item.val) == false) {
isNotPetch = false;
msg = item.msg;
}
}else if (item.type == 'TaxNum') {
if (regex.TaxNum(item.val) == false) {
isNotPetch = false;
msg = item.msg;
}
}else {
isNotPetch = false;
msg = '传入的检查类型不支持:'+item.type;
alert.showError(msg, '调用有误');
break;
}
// 检查不通过
if(isNotPetch==false)
{
alert.showError(msg, '检查不通过');
break;
}
}
} else {
isNotPetch = false;
alert.showError('参数不合法', '调用有误');
}
return isNotPetch;
},
testCheckArray: function() {
// 数据合并检查测试
var result = regex.checkArray([{
val: '18651669817',
type: 'phoneNumber',
msg: '手机号不合法'
},
{
val: '122323',
type: 'money',
msg: '金额不合法'
},
{
val: 'abc@yoo.com.cn',
type: 'Email',
msg: '邮箱不合法'
},
{
val: '1234rr',
type: 'TaxNum',
msg: '税号不合法'
}
]);
base.logInfo(result);
}
}
export default regex;
main.js引入封装类代码:
import jsRegex from './common/js-regex.js' Vue.prototype.jsRegex = jsRegex;