Как проверить, есть ли имя и фамилия пользователя в пароле? - PullRequest
0 голосов
/ 03 октября 2019

Я проверяю пароль по следующим критериям: 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");                  
          }
      }
   }
}

Ответы [ 3 ]

0 голосов
/ 03 октября 2019

Так как вы не пометили регулярное выражение, есть еще один способ:

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
0 голосов
/ 03 октября 2019

Для версий 7 и 8 вы можете использовать Array.prototype.includes() и изменить свой код, как показано ниже:

Я предполагаю, firstName и lastName в качестве переменных вы можете получить его из DOM, используя один из Document.querySelector () или любой другой манипулятор 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");                  
          }
      }
   }
}
0 голосов
/ 03 октября 2019

Вот код 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>
...