具有 8 个字符和 2 位数字的密码验证器不起作用
Password validator with 8 characters and 2 digits don't work
嘿,我正在尝试让这个密码验证器使用 8 个字符和 2 个数字,但是..它没有。
我看不出我的代码有什么问题。我的控制台没有说有错误
<div class="field with-indicator">
<label for="pass-one">Password:</label>
<input type="text" name="pass-one" id="pass-one" />
<span id="validity" class="indicator">Not Ok</span>
</div>
<script>
let input = document.getElementById('pass-one');
let regex = new RegExp("^(?=(.*[a-zA-Z]){1,})(?=(.*[0-9]){2,}).{8}$");
if ( !regex.test(input))
{
document.getElementById("validity").innerHTML = "Not Ok";
//return false;
}
else
{
document.getElementById("validity").innerHTML = "Ok";
}
</script>
尝试进行验证,例如每次输入更改后 oninput="validPass()"
(我不会更改您的正则表达式,但会在下面的代码段中的 <input>
标记中添加包装器 validPass() 函数和事件 - 但如果您希望密码至少为 8 个字符或更长,则将正则表达式 .{8}$
的最后一部分更改为 .{8,}$
)
let input = document.getElementById('pass-one');
let regex = new RegExp("^(?=(.*[a-zA-Z]){1,})(?=(.*[0-9]){2,}).{8}$");
function validPass() {
if ( !regex.test(input.value))
{
document.getElementById("validity").innerHTML = "Not Ok";
}
else
{
document.getElementById("validity").innerHTML = "Ok";
}
}
<div class="field with-indicator">
<label for="pass-one">Password:</label>
<input type="text" name="pass-one" id="pass-one" oninput="validPass()" />
<span id="validity" class="indicator" >Not Ok</span>
</div>
为了使您的代码正常工作,您需要将其包装到事件处理程序中。例如,您可以使用 change event and the addEventListener() 来设置处理程序:
document.getElementById('pass-one').addEventListener('change', function(e) {
let regex = new RegExp("^(?=(.*[a-zA-Z]){1,})(?=(.*[0-9]){2,}).{8}$");
if ( !regex.test(this.value)) {
document.getElementById("validity").innerHTML = "Not Ok";
//return false;
} else {
document.getElementById("validity").innerHTML = "Ok";
}
})
<div class="field with-indicator">
<label for="pass-one">Password:</label>
<input type="text" name="pass-one" id="pass-one" />
<span id="validity" class="indicator">Not Ok</span>
</div>
嘿,我正在尝试让这个密码验证器使用 8 个字符和 2 个数字,但是..它没有。 我看不出我的代码有什么问题。我的控制台没有说有错误
<div class="field with-indicator">
<label for="pass-one">Password:</label>
<input type="text" name="pass-one" id="pass-one" />
<span id="validity" class="indicator">Not Ok</span>
</div>
<script>
let input = document.getElementById('pass-one');
let regex = new RegExp("^(?=(.*[a-zA-Z]){1,})(?=(.*[0-9]){2,}).{8}$");
if ( !regex.test(input))
{
document.getElementById("validity").innerHTML = "Not Ok";
//return false;
}
else
{
document.getElementById("validity").innerHTML = "Ok";
}
</script>
尝试进行验证,例如每次输入更改后 oninput="validPass()"
(我不会更改您的正则表达式,但会在下面的代码段中的 <input>
标记中添加包装器 validPass() 函数和事件 - 但如果您希望密码至少为 8 个字符或更长,则将正则表达式 .{8}$
的最后一部分更改为 .{8,}$
)
let input = document.getElementById('pass-one');
let regex = new RegExp("^(?=(.*[a-zA-Z]){1,})(?=(.*[0-9]){2,}).{8}$");
function validPass() {
if ( !regex.test(input.value))
{
document.getElementById("validity").innerHTML = "Not Ok";
}
else
{
document.getElementById("validity").innerHTML = "Ok";
}
}
<div class="field with-indicator">
<label for="pass-one">Password:</label>
<input type="text" name="pass-one" id="pass-one" oninput="validPass()" />
<span id="validity" class="indicator" >Not Ok</span>
</div>
为了使您的代码正常工作,您需要将其包装到事件处理程序中。例如,您可以使用 change event and the addEventListener() 来设置处理程序:
document.getElementById('pass-one').addEventListener('change', function(e) {
let regex = new RegExp("^(?=(.*[a-zA-Z]){1,})(?=(.*[0-9]){2,}).{8}$");
if ( !regex.test(this.value)) {
document.getElementById("validity").innerHTML = "Not Ok";
//return false;
} else {
document.getElementById("validity").innerHTML = "Ok";
}
})
<div class="field with-indicator">
<label for="pass-one">Password:</label>
<input type="text" name="pass-one" id="pass-one" />
<span id="validity" class="indicator">Not Ok</span>
</div>