【问题标题】:How to check if the user's first and last names are in the password?如何检查用户的名字和姓氏是否在密码中?
【发布时间】:2020-02-01 07:39:42
【问题描述】:

我正在按照以下标准验证密码: 1•字母和数字 2•允许“!”、“?”、“。” 3•最少 1 个大写字母 4•最少 8 个字符 5•最多 16 个字符 6•最少2个号码 7•不包含名字 8•不包含姓氏

此代码适用于前 6 个条件,但仍无法验证 7 和 8。

function validatePassword(){
var inputs = document.getElementsByTagName('input');

var allowedInput = new RegExp("^(?=(.*\\d){2})(?=.*[A-Z])[a- 
    zA-Z0-9!?.]{8,16}$");
for(i = 0; i < inputs.length; i++){
     if(inputs[i].type == "password"){
          if(inputs[i].value.match(allowedInput)){
               console.log("Pass Good");                        
          }

          else{
           console.log("Only numbers, letters!,?,. allowed\n" + 
                "Between 8 - 16 chars\n" + 
            "Minimum one uppercase letter\n" +
            "Minimum 2 digits\n");                  
          }
      }
   }
}

【问题讨论】:

    标签: javascript validation passwords


    【解决方案1】:

    这是使用 Javascript 使用正则表达式验证名字和姓氏的 javascript 代码

    test() - 此函数用于在 JavaScript 中执行正则表达式匹配。

    var regName = /^[a-zA-Z]+ [a-zA-Z]+$/;
    var name = document.getElementById('nameInput').value;
    if(!regName.test(name)){
        alert('Invalid name given.');
    }else{
        alert('Valid name given.');
    }
    
    <script>
    function validate(){
        var regName = /^[a-zA-Z]+ [a-zA-Z]+$/;
        var name = document.getElementById('name').value;
        if(!regName.test(name)){
            alert('Please enter your full name (first & last name).');
            document.getElementById('name').focus();
            return false;
        }else{
            alert('Valid name given.');
            return true;
        }
    }
    </script>
    

    【讨论】:

      【解决方案2】:

      由于您没有使用正则表达式标记,这是另一种方式:

      var fnlc = firstname.toLowerCase();
      var lnlc = lastname.toLowerCase();
      var vallc = inputs[i].value.toLowerCase();
      var hasname = (vallc.indexOf(fnlc) >= 0 || vallc.indexOf(fnlc) >= 0);
      

      如果您因为非常喜欢正则表达式而对它下定决心;),那么只需分别测试名称:

      var testNames = new RegExp(firstname+'|'+lastname, "gi");
      var hasname = testNames.test(inputs[i].value); // true if found
      

      【讨论】:

      • 谢谢你,使用这些家伙的答案;我可以想出这个代码:
      • if( inputsTolc.includes(firstName) || inputsTolc.includes(lastName)){ console.log("密码中的名字或姓氏错误"); }
      【解决方案3】:

      对于 valdation 7 和 8,您可以使用 Array.prototype.includes() 并修改您的代码,如下所示:

      我假设 firstNamelastName 是您可以使用 Document.querySelector() 之一从 DOM 获取它的变量 或任何其他 DOM 操纵器。

      function validatePassword(){
      var inputs = document.getElementsByTagName('input');
      var allowedInput = new RegExp("^(?=(.*\\d){2})(?=.*[A-Z])[a- 
          zA-Z0-9!?.]{8,16}$");
      for(i = 0; i < inputs.length; i++){
           if(inputs[i].type == "password" && inputs[i].includes(firstName) && inputs[i].includes(lastName)){
                if(inputs[i].value.match(allowedInput) && ){
                     console.log("Pass Good");                        
                }
      
                else{
                 console.log("Only numbers, letters!,?,. allowed\n" + 
                      "Between 8 - 16 chars\n" + 
                  "Minimum one uppercase letter\n" +
                  "Minimum 2 digits\n");                  
                }
            }
         }
      }
      

      【讨论】:

      • 谢谢你,这真的很有用,通过使用你的代码,我可以想出这个代码:
      • if( inputsTolc.includes(firstName) || inputsTolc.includes(lastName)){ console.log("密码中的名字或姓氏错误"); }
      猜你喜欢
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      相关资源
      最近更新 更多