2016-07-28 11 views
-1
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W])[A-Za-z\d\W]{8,}  

Регулярное выражение для проверки пароля должно быть не менее 8 символов, 1 строчный регистр, 1 верхний регистр, 1 номер, 1 специальный характер и не должен содержать пространство и запятуюПроверка пароля позволяет определенному символу min 8 charecter, номеру, алфавиту и не должен содержать пробела и запятую

+0

Когда мы вводим этот текст Helloworld !, как пароль, он должен вызывать ошибку, так как он содержит запятую –

+1

. Что вы думаете? –

+0

Когда мы вводим этот текст Helloworld !, как пароль, он должен выкинуть ошибку, он содержит запятую –

ответ

1

Вы можете создавать массивы, содержащие RegExp элементов, которые должны возвращать true, и который должен вернуть false, используйте Array.prototype.every(), чтобы проверить, если строка содержит значение каждого

var str = `1aB$1234`; 
 
var str1 = `1aB$,234`; 
 
var str2 = `1aB$123 `; 
 
// should match at least one of each `RegExp` in array 
 
var matches = [/[a-z]{1}/, /[A-Z]{1}/, /[0-9]{1}/, /[!#$]{1}/]; 
 
// should not match any `RegExp` in array 
 
var not = [/,/, /\s/] 
 

 
var checkpw = (input) => matches.every(match => new RegExp(match).test(input)) 
 
         && not.every(n => !new RegExp(n).test(input)) 
 
         && input.length === 8; 
 

 
console.log("\n","str:" + `${str}:` + checkpw(str) + "\n" 
 
      , "str1:" + `${str1}:` + checkpw(str1) + "\n" 
 
      , "str2:" + `${str2}:` + checkpw(str2));

+0

Ваш синтаксис правильный, но не общий для моих глаз ... Я никогда не видел что-то вроде этого 'var checkpw = (input) => ... до сих пор. Также почему вы использовали '$' в начале имен переменных? – Shafizadeh

+0

@Shafizadeh См. Https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions, https://developer.mozilla.org/en-US/docs/Web/JavaScript/ Ссылка/Template_literals – guest271314

+0

Отлично. , , , +1 – Shafizadeh