Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 密码正则表达式,最少6个字符,至少一个字母和一个数字,可能包含特殊字符_Javascript_Asp.net_Regex - Fatal编程技术网

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返回不匹配

  • 检查7到16个字符之间的密码,该密码仅包含字符、数字、下划线,并且第一个字符必须是字母-

    /^[A-Za-z]\w{7,14}$/

  • 检查至少包含一个数字、一个大写字母和一个小写字母的6到20个字符之间的密码

    /^(?=.\d)(?=[a-z])(?=.[a-z])。{6,20}$/

  • 检查7到15个字符之间的密码,其中至少包含一个数字和一个特殊字符

    /^(?=[0-9])(?=[!@$%^&])[a-zA-Z0-9!@$%^&]{7,15}$/

  • 检查8到15个字符之间的密码,其中至少包含一个小写字母、一个大写字母、一个数字和一个特殊字符

    /^(?=.-d)(?=[a-z])(?=[a-z])(?=[a-zA-Z0-9])(?!.\s)。{8,15}$/

  • 我希望这能帮助别人。有关更多信息,请查看此网站我使用此网站

    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 &amp; special(@#$%&!-_&amp;) 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 &amp; special(@#$%&!-_&amp;) 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();
    }
    }