Sri*_*har 35 javascript regex passwords
我正在尝试使用正则表达式验证密码.如果我们将所有字符都作为字母表,则密码会更新.我哪里错了?正则表达对吗?
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;
}
}
Run Code Online (Sandbox Code Playgroud)
Joã*_*lva 63
使用正向前瞻断言:
var regularExpression = /^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{6,16}$/;
Run Code Online (Sandbox Code Playgroud)
没有它,您当前的正则表达式只匹配您有6到16个有效字符,它不验证它至少有一个数字,至少是一个特殊字符.这就是上面的预测.
(?=.*[0-9])
- 断言字符串至少有一个数字;(?=.*[!@#$%^&*])
- 断言字符串至少有一个特殊字符.小智 28
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;
}
Run Code Online (Sandbox Code Playgroud)
以下答案中存在一定的问题,因为在检查字符和数字时由于没有[]而没有检查整个字符串,这是正确的版本
Ujj*_*val 18
你可以为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,}$/
Run Code Online (Sandbox Code Playgroud)
Ruj*_*hah 14
我使用以下脚本作为最小8字母密码,至少包含一个符号,大写和小写字母以及一个数字
function checkPassword(str)
{
var re = /^(?=.*\d)(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z]).{8,}$/;
return re.test(str);
}
Run Code Online (Sandbox Code Playgroud)
Mit*_*shu 11
在这里我扩展@Jo\xc3\xa3o Silva\的答案。我需要检查不同的参数并相应地抛出不同的消息。
\n我将正则表达式分为不同的部分,现在该checkPasswordValidity(String)
函数有条件地检查每个正则表达式部分并抛出不同的消息。
希望下面的例子能够帮助您更好的理解!
\n/**\n * @param {string} value: passwordValue\n */\nconst checkPasswordValidity = (value) => {\n const isNonWhiteSpace = /^\\S*$/;\n if (!isNonWhiteSpace.test(value)) {\n return "Password must not contain Whitespaces.";\n }\n\n const isContainsUppercase = /^(?=.*[A-Z]).*$/;\n if (!isContainsUppercase.test(value)) {\n return "Password must have at least one Uppercase Character.";\n }\n\n const isContainsLowercase = /^(?=.*[a-z]).*$/;\n if (!isContainsLowercase.test(value)) {\n return "Password must have at least one Lowercase Character.";\n }\n\n const isContainsNumber = /^(?=.*[0-9]).*$/;\n if (!isContainsNumber.test(value)) {\n return "Password must contain at least one Digit.";\n }\n\n const isContainsSymbol =\n /^(?=.*[~`!@#$%^&*()--+={}\\[\\]|\\\\:;"\'<>,.?/_\xe2\x82\xb9]).*$/;\n if (!isContainsSymbol.test(value)) {\n return "Password must contain at least one Special Symbol.";\n }\n\n const isValidLength = /^.{10,16}$/;\n if (!isValidLength.test(value)) {\n return "Password must be 10-16 Characters Long.";\n }\n\n return null;\n}\n\n//------------------\n// Usage/Example:\nlet yourPassword = "yourPassword123";\nconst message = checkPasswordValidity(yourPassword);\n\nif (!message) {\n console.log("Hurray! Your Password is Valid and Strong.");\n} else {\n console.log(message);\n}
Run Code Online (Sandbox Code Playgroud)\r\n此外,我们可以将所有这些正则表达式模式组合成单个正则表达式:
\nlet regularExpression = /^(\\S)(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[~`!@#$%^&*()--+={}\\[\\]|\\\\:;"\'<>,.?/_\xe2\x82\xb9])[a-zA-Z0-9~`!@#$%^&*()--+={}\\[\\]|\\\\:;"\'<>,.?/_\xe2\x82\xb9]{10,16}$/;\n
Run Code Online (Sandbox Code Playgroud)\n注意:上面讨论的正则表达式将检查给定输入值/密码中的以下模式:
\n谢谢!
\nCha*_*ion 10
不要试图一步到位.保持每条规则分开.
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;
}
Run Code Online (Sandbox Code Playgroud)
密码正则表达式:
/^(?=.*\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 >>!#$%&? "<<])[a-zA-Z0-9 >>!#$%&?<< ]
这里的解决方案都不允许使用国际字符,即 \xc3\xa9\xc3\x89\xc3\xa1\xc3\x81\xc3\xb6\xc3\x96\xc3\xa6\xc3\x86\xc3\xbe\xc3\x9e \xc3\xb3\xc3\x93\xc3\xba\xc3\x9a,但只关注英文字母。
\n以下正则表达式使用 unicode UTF-8 来识别大小写,因此允许国际字符:
\n// Match uppercase, lowercase, digit or #$!%*?& and make sure the length is 8 to 96 in length \nconst pwdFilter = /^(?=.*\\p{Ll})(?=.*\\p{Lu})(?=.*[\\d|@#$!%*?&])[\\p{L}\\d@#$!%*?&]{8,96}$/gmu\n\nif (!pwdFilter.test(pwd)) {\n // Show error that password has to be adjusted to match criteria\n}\n
Run Code Online (Sandbox Code Playgroud)\n这个正则表达式
\n/^(?=.*\\p{Ll})(?=.*\\p{Lu})(?=.*[\\d|@#$!%*?&])[\\p{L}\\d@#$!%*?&]{8,96}$/gmu
检查密码中是否使用大写、小写、数字或#$!%*?&。它还限制长度最小为 8,最大为 96,\xe2\x80\x8d 表情符号的长度算作超过 1 个字符的长度。\nu
最后,告诉它使用 UTF-8。