Проверка паролей со специальными символами - PullRequest
1 голос
/ 16 июня 2020

Я хочу добавить проверку моего пароля специальными символами. Моя проблема в том, что когда я использую "%", это не работает. Как правильно добавить проверку специальных символов?

$.validator.addMethod("pwcheck", function(value) {
  return /^[A-Za-z0-9\d=!\-@._*]*$/.test(value) // consists of only these
      && /[a-z]/.test(value) // has a lowercase letter
      && /[A-Z]/.test(value) // has a upper letter
      && /[!,%,&,@,#,$,^,*,?,_,~]/.test(value) // has a symbol
      && /\d/.test(value) // has a digit
});

1 Ответ

4 голосов
/ 16 июня 2020

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

^(?=\D\d)(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])(?=[^-!@._*#%]*[-!@._*#%])[-A-Za-z0-9=!@._*#%]*$

Объяснение приведенного выше регулярного выражения:

^, $ - обозначает начало и конец строки соответственно.

(?=\D*\d) - Представляет положительный взгляд, который утверждает как минимум di git.

(?=[^A-Z]*[A-Z]) - представляет положительный взгляд, который утверждает, по крайней мере, заглавную букву.

(?=[^a-z]*[a-z]) - представляет положительный взгляд, который утверждает, по крайней мере, строчная буква.

(?=[^-!@._*#%]*[-!@._*#%]) - Представляет положительный взгляд, который утверждает, по крайней мере, для символа среди перечисленных. Вы можете добавить больше символов в соответствии с вашими требованиями.

[-A-Za-z0-9=!@._*#%]* - соответствует нулю или более среди перечисленных символов. Соответственно вы можете добавить больше символов.

Вы можете найти демонстрацию вышеуказанного регулярного выражения в здесь.

Пример реализация вышеуказанного регулярного выражения в javascript:

const myRegexp = /^(?=[^\d\n]*\d)(?=[^A-Z\n]*[A-Z])(?=[^a-z\n]*[a-z])(?=[^-!@._*#%\n]*[-!@._*#%])[-A-Za-z0-9=!@._*#%]*$/gm; // Using \n for demo example. In real time no requirement of the same.
const myString = `thisisSOSmepassword#
T#!sIsS0om3%Password
thisisSOSmepassword12
thisissommepassword12#
THISISSOMEPASSWORD12#
thisisSOMEVALIDP@SSWord123
`;
// 1. doesn't contain a digit --> fail
// 3. doesn't contain a symbol --> fail
// 4. doesn't contain an Upper case letter --> fail
// 5. doesn't contain a lowercase letter --> fail
let match;
// Taken the below variable to store the result. You can use if-else clause if you just want to check validity i.e. valid or invalid.
let resultString = "";
match = myRegexp.exec(myString);
while (match != null) {
  resultString = resultString.concat(match[0] + "\n");
  match = myRegexp.exec(myString);
}
console.log(resultString);

Ссылки:

  1. Рекомендуемые значения: Принцип контрастности.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...