Я использую ng-pattern для проверки своей клиентской стороны в нескольких случаях, например, при проверке сложности пароля.
Теперь я получаю действительно странные совпадения в своем регулярном выражении, используя ng-шаблон. Посмотрите на примеры внизу
<span class="registration-error" ng-show="regForm.password.$error.pattern">- Fail to match..</span>
<input type="password" ng-model="registerForm.password" name="password" ng-pattern="/^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[\d\W]).*$/" required/>
Вышеупомянутое должно потребовать 8 символов, по крайней мере, 1 символ в верхнем регистре и 1 цифру или специальный символ. По какой-то причине я получаю совпадение для таких слов, как FaiLoudD, что не имеет смысла.
Я запускаю одно и то же регулярное выражение в своем бэкэнде Python, и оно работает как шарм. Я также проверил регулярное выражение, используя http://regexpal.com/, и оно также отлично работает.
Почему ng-шаблон так странно совпадает?
Обновлять:
Я просмотрел все модули и весь процесс сборки моего приложения. Директива ng-pattern снова начала работать, когда я отключил grunt-html2js в процессе сборки. Похоже, это привело к тому, что ng-pattern неправильно интерпретировал регулярное выражение. Поскольку выпуск создается в проекте html2js. И на этом я закрою этот вопрос.
.*
из начала шаблона, потому что на самом деле вы хотите, чтобы все предпросмотры начинались с начала строки (это также должно значительно повысить производительность). - person Martin Ender   schedule 23.08.2013