Javascript 密码正则表达式,最少6个字符,至少一个字母和一个数字,可能包含特殊字符
我需要一个带条件的正则表达式:Javascript 密码正则表达式,最少6个字符,至少一个字母和一个数字,可能包含特殊字符,javascript,asp.net,regex,Javascript,Asp.net,Regex,我需要一个带条件的正则表达式: 最少6个字符,最多50个字符 必须包含1个字母 必须包含1个数字 可能包含特殊字符,如!@$%^&*()_+ 目前我有模式:(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,50})$ 但是它不允许特殊字符,有人有好的正则表达式吗 谢谢也许可以使用一个正则表达式,但这使得很难向用户反馈他们不遵守的规则。这样一种更传统的方法为您提供反馈,您可以在UI中使用它来告诉用户哪些pwd规则未得到满足: function checkPw
- 最少6个字符,最多50个字符
- 必须包含1个字母
- 必须包含1个数字
- 可能包含特殊字符,如!@$%^&*()_+
(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,50})$
但是它不允许特殊字符,有人有好的正则表达式吗
谢谢也许可以使用一个正则表达式,但这使得很难向用户反馈他们不遵守的规则。这样一种更传统的方法为您提供反馈,您可以在UI中使用它来告诉用户哪些pwd规则未得到满足:
function checkPwd(str) {
if (str.length < 6) {
return("too_short");
} else if (str.length > 50) {
return("too_long");
} else if (str.search(/\d/) == -1) {
return("no_num");
} else if (str.search(/[a-zA-Z]/) == -1) {
return("no_letter");
} else if (str.search(/[^a-zA-Z0-9\!\@\#\$\%\^\&\*\(\)\_\+]/) != -1) {
return("bad_char");
}
return("ok");
}
功能检查pwd(str){
如果(str.length<6){
返回(“太短”);
}否则,如果(str.length>50){
返回(“太长”);
}else if(str.search(/\d/)=-1){
返回(“否”);
}else if(str.search(/[a-zA-Z]/)=-1){
报税表(“无信”);
}否则如果(str.search(/[^a-zA-Z0-9\!\@\\\\$\%\^\&\*\(\)\\\\+]/)!=1){
返回(“坏字符”);
}
返回(“ok”);
}
我有一个正则表达式,但有点棘手
^(?:(?<Numbers>[0-9]{1})|(?<Alpha>[a-zA-Z]{1})|(?<Special>[^a-zA-Z0-9]{1})){6,50}$
希望它在javascript中也能起到同样的作用!祝你好运 根据jfriend00的回答,我写了这个提琴来测试他的解决方案,并做了一些小改动,使其更加直观: 这是代码:
checkPwd = function() {
var str = document.getElementById('pass').value;
if (str.length < 6) {
alert("too_short");
return("too_short");
} else if (str.length > 50) {
alert("too_long");
return("too_long");
} else if (str.search(/\d/) == -1) {
alert("no_num");
return("no_num");
} else if (str.search(/[a-zA-Z]/) == -1) {
alert("no_letter");
return("no_letter");
} else if (str.search(/[^a-zA-Z0-9\!\@\#\$\%\^\&\*\(\)\_\+\.\,\;\:]/) != -1) {
alert("bad_char");
return("bad_char");
}
alert("oukey!!");
return("ok");
}
checkPwd=function(){
var str=document.getElementById('pass')。值;
如果(str.length<6){
警惕(“太短”);
返回(“太短”);
}否则,如果(str.length>50){
警惕(“太长”);
返回(“太长”);
}else if(str.search(/\d/)=-1){
警报(“无编号”);
返回(“否”);
}else if(str.search(/[a-zA-Z]/)=-1){
警告(“无信”);
报税表(“无信”);
}否则如果(str.search(/[^a-zA-Z0-9\!\\\\\$\%\^\&\*\(\)\\\\\+.\,\;\:]/)!=-1){
警报(“坏字符”);
返回(“坏字符”);
}
警惕(“oukey!!”);
返回(“ok”);
}
顺便说一句,它的工作就像一个符咒
当然,向jfriend00致以最诚挚的问候和感谢 与这些(常见)密码要求相匹配的更优雅、更完备的正则表达式是:
这里的优雅之处在于,您不必对符号进行硬编码,如$@#等
要接受所有符号,您只需说:“接受所有非字母数字字符,而非数字”
最小和最大字符数要求
regex{5,50}
的最后一部分是最小和最大字符数,如果输入的密码少于6个或多于50个字符,则regex返回不匹配
export const validatePassword = password => {
const re = /^(?=.*[A-Za-z])(?=.*\d)[a-zA-Z0-9!@#$%^&*()~¥=_+}{":;'?/>.<,`\-\|\[\]]{6,50}$/
return re.test(password)
}
export const validatePassword=password=>{
常数re=/^(?=.[A-Za-z])(?=.*\d)[A-Za-Z0-9!@$%^&*()~¥=.+}{:;'?/>
ON键按下功能触发器RED
HTML
<form>
<input type="text" name="testpwd" id="testpwd" class="form=control" onkeyup="checksPassword(this.value)"/>
<input type="submit" value="Submit" /><br />
<span class="error_message spassword_error" style="display: none;">Enter minimum 8 chars with atleast 1 number, lower, upper & special(@#$%&!-_&) char.</span>
</form>
像[!@#$%^&*()这样的特殊字符-你不允许什么?我的正则表达式并不令人惊讶,但它似乎允许6到50个字符集,它不要求每个字符集的值至少包含一个,我可以有6到50个数字或字母,但可能我没有每个组中的一个。项目2不起作用。对于那些需要该策略的人,欢迎使用使用这个/^(?=.*\d)(?=.[a-z])(?=.[a-z])。{6,20}$/我知道这是一个旧线程,但我需要一个regex密码验证器,我无法得到任何这些答案。我已经在一个regex站点上尝试了你的答案。不行。这是字符串(?=.[a-Za-z])(?=.\\d)[a-Za-z\\d^a-Za-Z0-9]{6,}$
验证至少1个大写字母、1个数字和一个特殊字符
export const validatePassword = password => {
const re = /^(?=.*[A-Za-z])(?=.*\d)[a-zA-Z0-9!@#$%^&*()~¥=_+}{":;'?/>.<,`\-\|\[\]]{6,50}$/
return re.test(password)
}
<form>
<input type="text" name="testpwd" id="testpwd" class="form=control" onkeyup="checksPassword(this.value)"/>
<input type="submit" value="Submit" /><br />
<span class="error_message spassword_error" style="display: none;">Enter minimum 8 chars with atleast 1 number, lower, upper & special(@#$%&!-_&) char.</span>
</form>
function checksPassword(password){
var pattern = /^.*(?=.{8,20})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%&!-_]).*$/;
if(!pattern.test(password)) {
$(".spassword_error").show();
}else
{
$(".spassword_error").hide();
}
}