@[TOC]使用排除法一一排除
1、排除大小写字母
(?![a-zA-Z]+$)
2、排除大写字母和数字
(?![A-Z0-9]+$)
3、排除大写字母和特殊字符
(?![A-Z\\W_!@#$%^&*`~()-+=]+$)
4、排除小写字母和数字
(?![a-z0-9]+$)
5、排除小写字母和特殊字符
(?![a-z\\W_!@#$%^&*`~()-+=]+$)
6、排除数字和特殊字符
(?![0-9\\W_!@#$%^&*`~()-+=]+$)
7、排除大、小写字母和数字
(?![a-zA-Z0-9]+$)
8、排除大、小写字母和特殊字符
(?![a-zA-Z\\W_!@#$%^&*`~()-+=]+$)
9、排除小写字母、数字和特殊字符
(?![a-z0-9\\W_!@#$%^&*`~()-+=]+$)
10、排除大写字母、数字和特殊字符
(?![0-9A-Z\\W_!@#$%^&*`~()-+=]+$)
11、最后匹配这个大小写字母、数字和特殊字符的正则
[a-zA-Z0-9\\W_!@#$%^&*`~()-+=]
12、完整的正则表达式如下:
var reg = /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\\W_!@#$%^&*`~()-+=]+$)(?![0-9\\W_!@#$%^&*`~()-+=]+$)(?![a-zA-Z0-9]+$)(?![a-zA-Z\\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9\\W_!@#$%^&*`~()-+=]+$)(?![0-9A-Z\\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\\W_!@#$%^&*`~()-+=]{8,16}$/
这是html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<input type="text" id="passwords" oninput="pwd()"/><br />
<span id="icon1">*</span><span>不能相同字符(如111、aaa)连续3位或3位以上</span><br />
<span id="icon2">*</span><span>不能连续字符(如123、abc)连续3位或3位以上</span><br />
<span id="icon3">*</span><span>密码不得包含键盘上任意连续的三个字符或shift转换字符</span><br />
<span id="icon4">*</span><span>必须包含大小写字母、数字以及特殊字符,且长度在8到16位之间</span><br />
<script type="text/javascript" src="js/jquery-1.12.4.js"></script>
<script src="js/password_check.js"></script>
<script type="text/javascript">
function pwd(){
var pwds = $("#passwords").val();
//不能相同字符(如111、aaa)连续3位或3位以上
var flag1 = checkSame(pwds);
//不能连续字符(如123、abc)连续3位或3位以上
var flag2 = checkRepeat(pwds);
//密码不得包含键盘上任意连续的三个字符或shift转换字符
var flag3 = validateKey(pwds);
//必须包含大小写字母、数字以及特殊字符,且长度在8到16位之间
var flag4 = check_length(pwds);
if(flag1){
$("#icon1").css("color","green");
}else{
$("#icon1").css("color","red");
}
if(flag2){
$("#icon2").css("color","green");
}else{
$("#icon2").css("color","red");
}
if(flag3){
$("#icon3").css("color","green");
}else{
$("#icon3").css("color","red");
}
if(flag4){
$("#icon4").css("color","green");
}else{
$("#icon4").css("color","red");
}
}
</script>
</body>
</html>
完整的JS(JS文件的名字叫password.js/自己创建,需要自己下一个jQuery文件)
//密码不得包含键盘上任意连续的三个字符或shift转换字符
function validateKey(str) {
//定义横向穷举
var keyCode = [
["`~·", "1=", "2@@", "3#", "4$¥", "5%", "6^……", "7&", "8*", "9((", "0))", "-_", "=+"],
[" ","qQ", "wW", "eE", "rR", "tT", "yY", "uU", "iI", "oO", "pP", "[{【", "]}】", "\\|、"],
[" ","aA", "sS", "dD", "fF", "gG", "hH", "jJ", "kK", "lL", ";:", "\'\"’“"],
[" ","zZ", "xX", "cC", "vV", "bB", "nN", "mM", ",《<", ".>》", "/??"]
];
//找出给出的字符串,每个字符,在坐标系中的位置。
var c = str.split("");
console.log(c)
var x = new Array();
var y = new Array();
for (var i = 0; i < c.length; i++) {
var temp = c[i];
toHere:
for (var j = 0; j < keyCode.length; j++) {
for (var k = 0; k < keyCode[j].length; k++) {
var jk = keyCode[j][k];
if (jk.indexOf(temp)!=-1) {
x.push(j);
y.push(k);
break toHere;
}
}
}
}
var flag = true;
for (var i = 0; i < x.length - 2; i++) {
// 如果X一致,那么就是在一排
if (x[i] == x[i + 1] && x[i + 1] == x[i + 2]) {//四者在同一行上
if (y[i] > y[i + 2]) {
if (y[i] - 1 == y[i + 1] && y[i] - 2 == y[i + 2]) {
flag = false;
break;
}
} else {
if (y[i] + 1 == y[i + 1] && y[i] + 2 == y[i + 2]) {
flag = false;
break;
}
}
} else if (x[i] != x[i + 1]
&& x[i + 1] != x[i + 2]
&& x[i] != x[i + 2]
) {//四者均不在同一行上,但是如果y相同,说明是一列
if (y[i] == y[i + 1] && y[i + 1] == y[i + 2]) {
flag = false;
break;
}
}
}
return flag;
}
//不能相同字符(如111、aaa)连续3位或3位以上
function checkSame(str) {
var re = /(\w)*(\w)\2{2}(\w)*/g;
if(re.test(str)){
return false;
}else{
return true;
}
}
//不能连续字符(如123、abc)连续3位或3位以上
function checkRepeat(str){
var arr = str.split('');
var flag = true;
for (var i = 1; i < arr.length-1; i++) {
var firstIndex = arr[i-1].charCodeAt();
var secondIndex = arr[i].charCodeAt();
var thirdIndex = arr[i+1].charCodeAt();
thirdIndex - secondIndex == 1;
secondIndex - firstIndex==1;
if((thirdIndex - secondIndex == 1)&&(secondIndex - firstIndex==1)){
flag = false;
}
}
return flag;
}
//必须包含大小写字母、数字以及特殊字符,且长度在8到16位之间
function check_length(str){
var reg = /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_.,/;:!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\\W_!@#$%^.,/;:&*`~()-+=]+$)(?![0-9\\W_!@#.,/;:$%^&*`~()-+=]+$)(?![a-zA-Z0-9]+$)(?![a-zA-Z\\W_!@#$%.,/;:^&*`~()-+=]+$)(?![a-z0-9\\W_!@#$%.,/;:^&*`~()-+=]+$)(?![0-9A-Z\\W_!@#.,/;:$%^&*`~()-+=]+$)[a-zA-Z0-9\\W_!@#$.,/;:%^&*`~()-+=]{8,16}$/;
var flag = false;
if(reg.test(str)){
flag=true;
}
return flag;
}
这是只有小写字母、数字和特殊符号
这是四种都包含在内的
输入框首字符不能为0且只能输入数字,长度为6 的验证
<el-input v-model="data.nums" size="mini" placeholder="请填写信息"
oninput="value = value.length>6?value=value.slice(0,6):value.replace(/[^\d]/g,'').replace(/^0{1,}/g,'')"></el-input>
PS:特殊字符我打的比较少,可以自己在里面添加一些