Używam ng-wzór do sprawdzania poprawności strony mojego klienta, jeśli kilka przypadków, takich jak patrząc na złożoność hasła.Dziwne zachowanie AngularJS ng wzoru (regex)
Teraz otrzymuję bardzo dziwne dopasowania w moim regex przy użyciu ng-pattern. Spójrz na przykłady poniżej:
<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/>
Powyższe powinno wymagać 8 znaków, co najmniej 1 wielką literę i 1 cyfrę lub znak specjalny. Z jakiegoś powodu uzyskuję dopasowanie do słów takich jak FaiLoudD, co nie ma sensu.
Uruchomiłem to samo wyrażenie w moim systemie python i działa jak urok. Sprawdziłem również regex przy użyciu http://regexpal.com/ i działa również idealnie.
Dlaczego wzór ng jest tak dziwny?
Aktualizacja:
I wykopali przez wszystkich modułów i całego procesu budowlanego mojej aplikacji. Dyrektywa ng-pattern zaczęła działać ponownie, gdy wyłączam plik grunt-html2js w procesie budowania. Wydaje się, że spowodowało to, że ng-pattern interpretował wyrażenie regularne niepoprawnie. Ponieważ problem jest tworzony w projekcie html2js. I z tym zamknę to pytanie.
To prawdopodobnie nie naprawi tego, ale powinieneś usunąć '. *' Od początku wzorca, ponieważ faktycznie chcesz, aby wszystkie uprzedzenia zaczynały się od początku ciągu (powinno to również znacznie poprawić wydajność) . –
Dziękuję m.buettner, nie naprawiłem rzeczywistego problemu, ale zmieniłem wzór regex zgodnie z twoją rekomendacją. Działa doskonale wszędzie, z wyjątkiem mojego klienta. Wzór Ng nadal działa naprawdę dziwacznie. – JoakimB
Wygląda dobrze na http://plnkr.co/edit/1dYysdjfyYilAP7C5DZy?p=preview. – sirhc