具有特殊字符的Javascript正则表达式密码验证
我正在尝试使用正则表达式验证密码。如果所有字符都是字母,密码就会更新。我哪里做错了?正则表达式正确吗具有特殊字符的Javascript正则表达式密码验证,javascript,regex,passwords,Javascript,Regex,Passwords,我正在尝试使用正则表达式验证密码。如果所有字符都是字母,密码就会更新。我哪里做错了?正则表达式正确吗 function validatePassword() { var newPassword = document.getElementById('changePasswordForm').newPassword.value; var minNumberofChars = 6; var maxNumberofChars = 16; var regularExpres
function validatePassword() {
var newPassword = document.getElementById('changePasswordForm').newPassword.value;
var minNumberofChars = 6;
var maxNumberofChars = 16;
var regularExpression = /^[a-zA-Z0-9!@#$%^&*]{6,16}$/;
alert(newPassword);
if(newPassword.length < minNumberofChars || newPassword.length > maxNumberofChars){
return false;
}
if(!regularExpression.test(newPassword)) {
alert("password should contain atleast one number and one special character");
return false;
}
}
函数validatePassword(){
var newPassword=document.getElementById('changePasswordForm').newPassword.value;
var-minNumberofChars=6;
var maxNumberofChars=16;
var regularExpression=/^[a-zA-Z0-9!@$%^&*]{6,16}$/;
警报(新密码);
if(newPassword.lengthmaxNumberofChars){
返回false;
}
if(!regularpression.test(newPassword)){
警报(“密码应至少包含一个数字和一个特殊字符”);
返回false;
}
}
如果单独检查长度,可以执行以下操作:
var regularExpression = /^[a-zA-Z]$/;
if (regularExpression.test(newPassword)) {
alert("password should contain atleast one number and one special character");
return false;
}
使用积极的断言:
var regularExpression = /^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{6,16}$/;
如果没有它,您当前的正则表达式只匹配您有6到16个有效字符,它不会验证它是否至少有一个数字,以及至少有一个特殊字符。这就是上面的展望的目的
-断言字符串至少有一个数字李>(?=.[0-9])
-断言字符串至少有一个特殊字符(?=.[!@$%^&*])
- 不要试图一步做太多。把每一条规则分开
function validatePassword() {
var p = document.getElementById('newPassword').value,
errors = [];
if (p.length < 8) {
errors.push("Your password must be at least 8 characters");
}
if (p.search(/[a-z]/i) < 0) {
errors.push("Your password must contain at least one letter.");
}
if (p.search(/[0-9]/) < 0) {
errors.push("Your password must contain at least one digit.");
}
if (errors.length > 0) {
alert(errors.join("\n"));
return false;
}
return true;
}
函数validatePassword(){
var p=document.getElementById('newPassword')。值,
误差=[];
如果(p.长度<8){
错误。推送(“您的密码必须至少为8个字符”);
}
如果(p.search(/[a-z]/i)<0){
错误。推送(“您的密码必须至少包含一个字母。”);
}
如果(p.search(/[0-9]/)<0){
错误。推送(“您的密码必须至少包含一个数字。”);
}
如果(errors.length>0){
警报(错误。加入(“\n”);
返回false;
}
返回true;
}
函数validatePassword(){
var p=document.getElementById('newPassword')。值,
误差=[];
如果(p.长度<8){
错误。推送(“您的密码必须至少为8个字符”);
}
如果(p.search(/[a-z]/i)<0){
错误。推送(“您的密码必须至少包含一个字母。”);
}
如果(p.search(/[0-9]/)<0){
错误。推送(“您的密码必须至少包含一个数字。”);
}
如果(errors.length>0){
警报(错误。加入(“\n”);
返回false;
}
返回true;
}
下面的答案中有一个特定的问题,因为在检查字符和数字时,由于缺少[]而没有检查整个字符串,这是正确的版本您可以为javascript验证创建自己的正则表达式
/^ : Start
(?=.{8,}) : Length
(?=.*[a-zA-Z]) : Letters
(?=.*\d) : Digits
(?=.*[!#$%&? "]) : Special characters
$/ : End
(/^
(?=.*\d) //should contain at least one digit
(?=.*[a-z]) //should contain at least one lower case
(?=.*[A-Z]) //should contain at least one upper case
[a-zA-Z0-9]{8,} //should contain at least 8 from the mentioned characters
$/)
Example:- /^(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z0-9]{7,}$/
我使用下面的脚本来表示至少8个字母的密码,至少有一个符号、大写字母和小写字母以及一个数字
function checkPassword(str)
{
var re = /^(?=.*\d)(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z]).{8,}$/;
return re.test(str);
}
密码的正则表达式:
/^(?=.*\d)(?=.[A-Z])(?=.[A-Z])(?=.[A-zA-Z!#$%&])[A-zA-Z0-9!#$%&]{8,20}$/
我花了一段时间才弄明白限制,但我做到了
限制:(注意:我使用了>和8,20}
{8,>>20}
(?=.[A-Z])
(?=.[a-z])
(?=.*\d)
(?=.[a-zA-Z>!#$%&?!#$%&?!#$%&?经过大量研究,我终于想出了这个。它有更多的特殊字符
validatePassword(password) {
const re = /(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()+=-\?;,./{}|\":<>\[\]\\\' ~_]).{8,}/
return re.test(password);
}
validatePassword(密码){
常数re=/(?=..*\d)(?=.[a-z])(?=.[a-z])(?=.[!@$%^&*(+=-\?;,./{}\\\\”:\[\]\\\\'~)。{8,}/
返回重新测试(密码);
}
当您重新创建帐户密码时,请确保它是8-20个字符,包括数字和特殊字符,如\\\/*
-然后验证新密码并重新输入完全相同的密码,应该可以解决密码验证的问题这对我来说非常有效,我相信对你们来说也会很容易且准确地签出密码
var regix = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.
{8,})");
if(regix.test(password) == false ) {
$('.messageBox').html(`<div class="messageStackError">
password must be a minimum of 8 characters including number, Upper, Lower And
one special character
</div>`);
}
else
{
$('form').submit();
}
var regix=new RegExp(“^(?=.[a-z])(?=.[a-z])(?=.[0-9])(?=.[!@\\$%\^&*])(?=。
{8,})");
if(regix.test(密码)==false){
$('.messageBox').html(`
密码必须至少包含8个字符,包括数字、大写、小写和小写
一个特殊的角色
`);
}
其他的
{
$('form').submit();
}
你说它没有被计算是什么意思?如果新密码至少应该包含一个数字和一个特殊字符。即使没有这些条件,密码剑也会被更新。我想我的正则表达式有一些问题。为什么要设置这样一个任意的最大长度?可以将正则表达式缩短为/^(?=.[\d])(?=.[!@$%^&*])[\w!@$%^&*]{6,16}$/
/^(?=.[0-9])(?=.[!@$%^&*])[a-zA-Z0-9!{6,16}$/12345678@12)将返回true。如果我想强制包含字母表怎么办?有人知道如果我var regexPttn=new RegExp(“/^(?=.*[0-9])(?=.[!@$%^&*])[a-zA-Z0-9!@$%^&*]这个正则表达式为什么不起作用吗{6,16}$/”;
由于某种原因,使用创建者会破坏它。@Bhuvan我使用此答案来改进提供的表达式。首先,包括更多特殊字符[空格、连字符、问号、斜杠、反斜杠]最重要的是,我增加了最小字符数,因为6个字符的密码是非常不安全的,尤其是在没有登录失败监控和/或2FA的情况下。也就是说,我得出这样的结论:^(?=.[0-9])(?=.[-?!@$%^&*/\])(?=.[A-Z])(?=.[A-Z])[A-zA-Z0-9-!%^&*/\]{8,30$
[a-zA-Z0-9!@$%^&*]{6,16}
到{6,16}
以便您可以输入任何字符(只要密码包含数字和特殊字符)。我不认为有任何理由拒绝密码
var regix = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.
{8,})");
if(regix.test(password) == false ) {
$('.messageBox').html(`<div class="messageStackError">
password must be a minimum of 8 characters including number, Upper, Lower And
one special character
</div>`);
}
else
{
$('form').submit();
}