如何检查用户的名字和姓氏是否在密码中?

时间:2019-10-03 02:09:15

标签: javascript validation passwords

我正在按照以下条件验证密码: 1•字母和数字 2•允许“!”,“?”,“。” 3•Min 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");                  
          }
      }
   }
}

3 个答案:

答案 0 :(得分:0)

这是用于使用正则表达式使用Java验证名字和姓氏的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>

答案 1 :(得分:0)

由于您未使用正则表达式标记,因此这是另一种方法:

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

答案 2 :(得分:0)

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

我假设 first lastName 是变量,您可以使用 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");                  
          }
      }
   }
}