gpt4 book ai didi

javascript - 正则表达式 - 验证密码条件 - 三分之二

转载 作者:行者123 更新时间:2023-12-04 19:49:27 25 4
gpt4 key购买 nike

我对密码有以下要求:

  1. 最少 8 个字符。
  2. 密码必须包含一个数字。
  3. 密码必须包含以下两个组中的字符:

    uppercase alphabet
    lowercase alphabet
    special characters [!@#$...]

我使用了下面的正则表达式

^(?=.+?[0-9])((?=.*?[a-z])(?=.+?[A-Z]))|((?=.*?[a-z])(?=.+?[~!@#$%^&*()-_=+]))|((?=.+?[A-Z])(?=.+?[~!@#$%^&*()-_=+])).{8,}$

Playground 可以找到[here]

感谢帮助

最佳答案

尝试创建一个可能的字符值数组,使用 Array.prototype.filter() 检查输入字符串中至少三个必需组中的两个

var re = ["abcdefghijklmnopqrstuvwxyz"
, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
, "~!@#$%^&*()-_=+"];

var input = document.querySelector("input");

function check(e) {
var str = this.value;
var res = str.length >= this.size // check length
&& /[0-9]/.test(str) // check digit
&& re.filter(function(val) {
return new RegExp(str.split("").join("|")).test(val)
}).length >= 2; // check for at least two of three required groups
// do stuff
this.className = res ? "valid" : "invalid"
}

input.oninput = input.onfocus = check;

input.focus();
input.invalid {
outline: 2px solid red;
}
input.invalid + label {
display: block;
}
input.valid {
outline: 2px solid green;
}
label,
input.valid + label {
display: none;
}
<input type="text" size="8" required="true" id="p" />
<label for="p">Required:
<br>1. minimum length of 8 characters.
<br>2. password must contain a number.
<br>3. password must have characters from two of the following groups:
<br>&nbsp;&nbsp;&nbsp;a) uppercase alphabet
<br>&nbsp;&nbsp;&nbsp;b) lowercase alphabet
<br>&nbsp;&nbsp;&nbsp;c) special characters: ~!@#$%^&*()-_=+</label>

关于javascript - 正则表达式 - 验证密码条件 - 三分之二,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33993294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com