Regex, который проверяет сложность пароля значения по умолчанию Active Directory

Вы забыли зарегистрировать слушателей по нажатию кнопок:

<button ng-click="increment()">+</button>{{Holder.value}}

Надеюсь, это поможет. Полный рабочий пример ниже:

<!DOCTYPE html>
<html>
  <head>
    <title>AngularJS Services</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.5/angular.min.js"></script>
  </head>
  <body>
    <div ng-app="dataServiceApp">
            <div ng-controller="ChildCtrl">
                    <h2>First controller</h2>
                    <button ng-click="increment()">+</button>{{Holder.value}}
                  </div>
                  <div ng-controller="ChildCtrl2">
                    <h2>Second controller</h2>
                    <button ng-click="increment()">+</button>{{Holder.value}}
                  </div>
    </div>
    <script>
        var myapp = angular.module("dataServiceApp",[]);
        myapp.factory('Holder', function() {
  return {
    value: 0
  };
});
myapp.controller('ChildCtrl', function($scope, Holder) {
  $scope.Holder = Holder;
  $scope.increment = function() {
    $scope.Holder.value++;
  };
});

myapp.controller('ChildCtrl2', function($scope, Holder) {
  $scope.Holder = Holder;
  $scope.increment = function() {
    $scope.Holder.value++;
  };
});
    </script>
  </body>
</html>

p.s. Я также полностью согласен с комментарием Дж. Б. Низета: проверьте, действительно ли вам нужно изучать AngularJS вместо Angular 2-7 / VueJS / React.

5
задан geoffc 10 July 2012 в 03:28
поделиться

3 ответа

Если вам действительно нужен один большой regex, то он будет выглядеть примерно так:

(?=^.{8,255}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*

Обратите внимание, что он также заставляет длину пароля быть от 8 до 255 символов. Вы можете изменить часть "{8,255}" в первом разделе, чтобы скорректировать требования к длине. Также стоит отметить, что у меня это работает в стандартном элементе управления ASP.NET RegularExpressionValidator.

Matches: "Passw0rd" "passW@rd" "1B2a345@#$%"

Не совпадения: "123123123" "Password" "asdf&"

Источник (Matthew Hazzard via RegExLib.com)

13
ответ дан 18 December 2019 в 10:48
поделиться

Вам нужно будет создайте регулярное выражение следующим образом:

rule = [ "[a-z]", "[A-Z]", "[0-9]", "[!@#$%\^\&\(\)\+=]" ]

regex = ""
first = true
for a in 0..3:
  for b in 0..3:
    if a == b: continue
    for c in 0..3:
      if a == c or b == c: continue
      if not first:
        regex += "|"
      regex += "(" + rule[a] + ".*" + rule[b] + ".*" + rule[c] + ")"
      first = false

Я не уверен, правильно ли я экранировал специальные символы. Это зависит от используемого вами языка / инструментария.

1
ответ дан 18 December 2019 в 10:48
поделиться

Does it have to be all one big regex? You could do 4 regexes, each checking one thing and then make sure 3 of the 4 are matches. That would be easier, less error prone and more maintainable.

2
ответ дан 18 December 2019 в 10:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: