1、/^[1-9]\d*$/ //正整数 大于0
2、/^(([1-9][0-9]{0,7})\.([0-9]{2}))|[0]\.([0-9]{2})$/ //金额必须保留两位小数,小数点前面控制1-8位
3、/(^[1-9]{1}[0-9]*$)|(^[1-9][0-9]*\.[0-9]{1,2}$)|(^[0]\.[1-9]{1}$)|(^[0]\.[0]{1}[1-9]{1}$)|(^[0]\.[1-9]{1}[0]{1}$)/ //金额可输入大于等于0的金额,小数点后最多输入两位
4、/^0\d{2,3}-\d{7,8}|\d{5,8}|((\+86)|(86))?(13|14|15|16|17|18|19)\d{9}$/ //手机、座机号一起校验例如0755-(号码)、(+86)或者不需要区号
5、/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X|x)$/ //身份证,不区分大小写x
6、/^[^\s]*$/ //全部不允许空格
7、/^\S+(\s+\S+)*$///首末不允许空格
8、/^[\u4E00-\u9FA5A-Za-z0-9_]+$/ //中英文、数字任何满足一种即可长度大于1即可
9、/^[A-Za-z0-9_]+$/ //英文+数字
10、/^[\u4E00-\u9FA5A-Za-z_]+$/ //中英文
11、/^[a-zA-Z0-9]+\s?[\_\-()a-zA-Z]*[a-zA-Z]+$/ //校验英文名中间的连接符为‘-’、‘_’,连接符不能出现在首尾
12、/^((1[34578]\d{9})(;|;))*?(1[34578]\d{9})(;|;)?$/ //校验可多个手机号或者一个手机号,多个手机号以中英文分号分割,单个手机号结束可出现分号也可不出现分号
13、/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,20}$/ //只能输入大小写字母以及数字,三种类型必须同时存在,长度8-20
14、/^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_]+$)(?![a-z0-9]+$)(?![a-z\W_]+$)(?![0-9\W_]+$)[a-zA-Z0-9\W_]{8,20}$/ //只能输入大小写字母、特殊字符以及数字,必须存在三种以上,长度8-20
15、强弱密码校验
// 校验强弱密码userName(用户姓名),pass (密码),panent(可去除,我自己项目国际化传输)
export function passwordValid(userName, pass ,parent) {
var passLower = pass.toLocaleLowerCase();
let userNameLower = userName.toLocaleLowerCase();
var flag = ' ' ;
if (pass == null || pass.length < 8 || pass.length > 20 || pass.length == '') {
flag = parent.$t('passwordValid.length');
return flag;
}
var isDigit = /^.*[0-9]+.*/;//数字
var isLowerCase = /^.*[a-z]+.*/; // isLowerCase 小写字母
var isUpperCase = /^.*[A-Z]+.*/; // isUpperCase 大写字母
var regEx = /^.*[^a-zA-Z0-9]+.*/;// 特殊字符
// 记录匹配的次数
var num = 0;
if (isDigit.test(pass)) {
num = num + 1;
}
if (isLowerCase.test(pass)) {
num = num + 1;
}
if (isUpperCase.test(pass)) {
num = num + 1;
}
if (regEx.test(pass)) {
num = num + 1;
}
if (num <= 2) {
flag = parent.$t('passwordValid.combination');
return flag;
}
//新密码不能包含用户名(例如原型、倒写、大写、重复)
if (passLower.indexOf(userNameLower) >= 0) {
flag = parent.$t('passwordValid.pwdContain');
return flag;
}
let newPass = passLower.split("").reverse().join("");//倒序pass
if (newPass.indexOf(userNameLower) >= 0){
flag = parent.$t('passwordValid.pwdContain');
return flag;
}
//密码中不能包含有连续四位及以上顺序(或逆序)数字(如:密码中不能包含1234或3210等)。
var numberSequence = false;
for (var i = 0; i < pass.length - 3; i++) {
if (!isDigit.test(pass.substring(i, i + 1))
|| !isDigit.test(pass.substring(i + 1, i + 2) + "")
|| !isDigit.test(pass.substring(i + 2, i + 3) + "")
|| !isDigit.test(pass.substring(i + 3, i + 4) + "")) {
continue;
}
var no1 = Number(pass.substring(i, i + 1));
var no2 = Number(pass.substring(i + 1, i + 2));
var no3 = Number(pass.substring(i + 2, i + 3));
var no4 = Number(pass.substring(i + 3, i + 4));
if (no1 + 1 == no2 && no2 + 1 == no3 && no3 + 1 == no4) {
numberSequence = true;
}
if (no2 + 1 == no1 && no3 + 1 == no2 && no4 + 1 == no3) {
numberSequence = true;
}
}
if (numberSequence) {
flag = parent.$t('passwordValid.numOrder');
return flag;
}
//密码中不能包含有连续四位及以上顺序(或逆序)字母,字母不区分大小写(如:密码中不能包含abcd或ABCD或AbcD或DcbA等)。
var letterSequence = false;
for (var i = 0; i < passLower.length - 3; i++) {
if (!isLowerCase.test(passLower.substring(i, i + 1)) || !isLowerCase.test(passLower.substring(i + 1, i + 2) + "") || !isLowerCase.test(passLower.substring(i + 2, i + 3) + "") || !isLowerCase.test(passLower.substring(i + 3, i + 4) + "")) {
continue;
}
var no1 = passLower.charAt(i).charCodeAt() + 0;
var no2 = passLower.charAt(i + 1).charCodeAt() + 0;
var no3 = passLower.charAt(i + 2).charCodeAt() + 0;
var no4 = passLower.charAt(i + 3).charCodeAt() + 0;
if (no1 + 1 == no2 && no2 + 1 == no3 && no3 + 1 == no4) {
letterSequence = true;
}
if (no2 + 1 == no1 && no3 + 1 == no2 && no4 + 1 == no3) {
letterSequence = true;
}
}
if (letterSequence) {
flag = parent.$t('passwordValid.wordOrder');
return flag;
}
//密码中不能包含有连续四位及以上重复字符,字母不区分大小写(如:密码中不能包含8888、aaaa 或AAAA或BbbB或 $$$$等四位及以上的重复字符)。
var fourOrMoreSame = false;
for (var i = 0; i < pass.length - 3; i++) {
if ((passLower.charAt(i)) == passLower.charAt(i + 1) &&
passLower.charAt(i + 1) == passLower.charAt(i + 2) &&
passLower.charAt(i + 2) == passLower.charAt(i + 3)) {
fourOrMoreSame = true;
}
}
if (fourOrMoreSame) {
flag = parent.$t('passwordValid.continue');
return flag;
}
// 键盘连续字母判断
if (isKeyBoardContinuousChar(passLower)){
flag = parent.$t('passwordValid.keyBoardContinuous');
return flag;
}
var cont = /^.*admin.*$/;
var cont2 = /^.*pass.*$/;
//禁忌词不区分大小写不能作为密码的一部分存在于密码中(如:admin, pass)。
if (cont.test(passLower) || cont2.test(passLower)) {
flag = parent.$t('passwordValid.keyWord');
return flag;
}
return 'correct';
}
// 键盘相邻字符校验
export function isKeyBoardContinuousChar(str) {
var c1 = [
['!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+'],
['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '{', '}', '|'],
['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ':', '"'],
['z', 'x', 'c', 'v', 'b', 'n', 'm', '<', '>', '?']
];
var c2 = [
['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '='],
['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', '\\'],
['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\''],
['z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/']
];
str = str.split("");
//获取坐标位置
var y = [];
var x = [];
for (var c = 0; c < str.length; c++) {
y[c] = 0; //当做~`键处理
x[c] = -1;
for (var i = 0; i < c1.length; i++) {
for (var j = 0; j < c1[i].length; j++) {
if (str[c] == c1[i][j]) {
y[c] = i;
x[c] = j;
}
}
}
if (x[c] != -1) continue;
for (var i = 0; i < c2.length; i++) {
for (var j = 0; j < c2[i].length; j++) {
if (str[c] == c2[i][j]) {
y[c] = i;
x[c] = j;
}
}
}
}
//匹配坐标连线
for (var c = 1; c < str.length - 1; c++) {
if (y[c - 1] == y[c] && y[c] == y[c + 1]) {
if ((x[c - 1] + 1 == x[c] && x[c] + 1 == x[c + 1]) || (x[c + 1] + 1 == x[c] && x[c] + 1 == x[c - 1])) {
return true;
}
} else if (x[c - 1] == x[c] && x[c] == x[c + 1]) {
if ((y[c - 1] + 1 == y[c] && y[c] + 1 == y[c + 1]) || (y[c + 1] + 1 == y[c] && y[c] + 1 == y[c - 1])) {
return true;
}
}
}
return false;
}
16、随机生成8-20的包含数字、大小写字母、特殊字符的密码
/**
* 2021年8月20日
* 生成8-20位随机密码,必包含大写小写数字特殊字符
* @param length,//生成随机密码长度
* @param passwordArray,生成密码字符串数组,默认大写,小写,数字,特殊字符
* @return 返回生成的密码字符串
*/
export function randPassword(length, passwordArray) {
var min = 8; //最小长度
var max = 20; //最大长度
length = Math.floor(Math.random() * (max - min + 1)) + min || 8; //生成随机密码长度
// 密码串----默认 大写字母 小写字母 数字,特殊字符
passwordArray = passwordArray || ['ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz', '1234567890', '~!@#$%^&*()_-+=[]{}|\\":;"\'\',./?<>'];
var password = '';
// 随机生成开始字符串
var startIndex = parseInt(Math.random() * (length));
var randIndex = [];
for (var i = 0; i < length; i++) {
// 创建数组,用于取随机位置 [0,1,2,3,4,5,....]
randIndex.push(i);
}
for (var i = 0; i < length; i++) {
// 根据随机数组生成随机位置
var r = parseInt(Math.random() * (randIndex.length));
var num = randIndex[r] + startIndex;
// 根据随机值取余数
var randRemainder = num % passwordArray.length;
// 当前密码串【大写字母,小写字母,数字等】
var currentPassword = passwordArray[randRemainder];
// 根据当前密码串长度取随机数
var index = parseInt(Math.random() * (currentPassword.length));
// 获取随机字符串
var str = currentPassword.substr(index, 1);
// 删除随机数组中已经使用的值
randIndex.splice(r, 1);
password += str;
}
return password;
}
console.log('生成的密码:', randPassword());