javascript - javascript验证密码中的随机字符,如“a1a,aKa,a$a,aJ^lG,G78%s#
问题描述
我有一个密码更改页面,我想用“2 个小写字母、2 个大写字母、3 个符号、2 个数字等来验证我的密码。现在从下面的代码中,我可以按顺序验证密码,例如“ aa, KK,ap, JK, 90, 89" 但不适用于 " aK9Ju, a^rtH, hGT5$u 等。
我只是粘贴小写字母的代码,如果您愿意,我可以提供整个代码。
psw.onkeyup = function() {
var LC = jsonData.LOWERCASE;
var psw = document.getElementById("psw").value.replace(/([a-z])\d+/g, '$1');
var lowerCaseLetters = new RegExp('[a-z]{' + LC + '}', 'g')
if(psw.match(lowerCaseLetters)) {
letter.classList.remove("invalid");
letter.classList.add("valid");
} else {
letter.classList.remove("valid");
letter.classList.add("invalid");
}
所以,我的要求是我输入密码的方式应该验证相同。
解决方案
我为您创建了一个具有 3 个约束的工作示例: - 2 个小写字母 - 2 个大写字母 - 2 个数字如果您需要添加一个约束,您只需编写一个简单的正则表达式来匹配该单个约束,并将其连接到现有的 if 语句通过&&
. 我使用了一个函数来计算从这里出现的正则表达式匹配的次数。
function testPassword(){
var pw = document.getElementById("password").value;
if ( count(pw, /[a-z]/g) > 1 &&
count(pw, /[A-Z]/g) > 1 &&
count(pw, /[0-9]/g) > 1 &&
count(pw,/\W|_/g) > 1 //special chars
){
alert("success")
}
}
const count = (str,pattern) => {
const re = pattern
return ((str || '').match(re) || []).length
}
<input id="password" type="text">
<input type="submit" id="submit" onClick="testPassword()">
推荐阅读
- node.js - Elasticsearch 429 Too Many Requests _bulk 与同步请求
- fluent-bit - Fluent Bit Tail Input 仅读取每个日志文件的前几行,直到再次重新启动
- java - 如何使用 CompletableFuture 的 supplyAsync 每次运行具有多个输入的相同方法?
- python-3.x - 如何设置 Visual Studio 代码?
- database - 不显示朋友的消息。onBindViewHolder 中的 ReceiverViewHolder 存在问题
- python - 如何在matplotlib图上锁定标签的位置
- javascript - 检查是否为空字符串或空字符串并使用条件运算符分配不同的值?在打字稿中
- sql - Google Query 功能过滤方式不正确(按 desc 排序)
- r - GGplot 散点图颜色区间
- java - 如何在Java线程中循环使用异步调用的方法