Я создавал регулярное выражение в угловом для проверки пароля, который должен иметь
положение любого символа или символа не ограничено.
Я пробовал это regex
/(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z])/
Но вышеупомянутое регулярное выражение принимает любой специальный символ, чтобы быть допустимым... Я просто хочу! @# $% Это, чтобы быть допустимым, недействительным
Я не уверен, что все вещи, которые вы хотите сделать, возможны в одном регулярном выражении. Но вы можете использовать простую функцию проверки, которая использует некоторые регулярные выражения:
function validate (pass) {
if (
/[A-Z]/.test(pass) && // uppercase letter is required
/[a-z]/.test(pass) && // lowercase letter is required
/[0-9]/.test(pass) && // number is required
/[!@#$%]/.test(pass) && // predefined symbol is required
!/[^A-Za-z0-9!@#$%]/.test(pass) // there is nothing unwanted
) {
return true;
}
return false;
}
Вот jsfiddle, чтобы показать, что он работает.
Попробуйте прослушиватель ng-change
- что-то вроде следующего HTML:
<input ng-model="pw" ng-change="checkPwPolicy(pw)">
<div ng-hide="passwordPolicyValid">Your password is too weak!</div>
В сочетании с этим Javascript в рамках контроллера этой формы:
function checkPwPolicy(password) {
var valid = true;
// at least 1 number
valid = valid && password.match(/[0-9]/).length > 0;
// at least 1 uppercase
valid = valid && password.match(/[A-Z]/).length > 0;
// ...
$scope.passwordPolicyValid = valid;
}
Некоторые вещи, которые вы могли бы сделать, чтобы улучшить эту реализацию, - это то, что вы можете чаще использовать огонь слушателя изменений, скрыть сообщение об ошибке, когда пароль не был затронут, а также добавить более подробные ошибки в сообщение о политике паролей.
checkPwPolicy
должна быть определена в контроллере на $scope