1
我正在使用此RegEx驗證輸入的密碼。密碼需要有至少1個英文大寫字母,1號和1個符號:AngularJS - 無效的正則表達式
/(?=.*?\d)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[^a-zA-Z\d])/
我在type="password"
輸入使用正則表達式與ng-pattern
一起。當輸入[email protected]
或Mike123*
時,它工作正常。但是,在進入Mike123***
時引發以下錯誤:
SyntaxError: Invalid regular expression: /^Mik123***$/: Nothing to repeat
正則表達式正常工作在這裏:https://regex101.com/r/j0O4aw/1。代碼在哪裏被使用:
<div class="input_fieldholder">
<input type="password"
class="m-b-0 login_typefield"
placeholder="Password"
name="password"
ng-class="{ form_error: vm.formObject.password.$dirty && vm.formObject.password.$invalid }"
ng-model="vm.password"
ng-minlength="6"
ng-change="vm.onChangePassword()"
ng-pattern="/(?=.*?\d)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[^a-zA-Z\d])/"
required
ng-attr-autofocus="{{ vm.autoFocus }}">
<div class="text-left m-t-3">
<div ng-show="vm.formObject.password.$dirty && vm.formObject.password.$error.required" class="text-danger">{{ 'PASSWORD_REQUIRED_VALIDATION' | translate }}</div>
<div ng-show="vm.formObject.password.$dirty && vm.formObject.password.$error.minlength" class="text-danger">{{ 'PASSWORD_LENGTH_VALIDATION' | translate }}</div>
<div ng-show="vm.formObject.password.$dirty && vm.formObject.password.$error.pattern" class="text-danger">{{ 'PASSWORD_PATTERN_VALIDATION' | translate }}</div>
</div>
</div>
<div class="input_fieldholder">
<input type="password"
class="m-t-10 m-b-0 login_typefield"
placeholder="Confirm Password"
name="confirmPassword"
ng-class="{ form_error: vm.formObject.confirmPassword.$dirty && vm.formObject.confirmPassword.$invalid }"
ng-model="vm.confirmPassword"
ng-pattern="vm.password"
ng-change="vm.onChangePassword()"
required
compare-field-selector="[name='password']">
<div class="text-left m-t-3">
<span ng-show="vm.formObject.confirmPassword.$dirty && vm.formObject.confirmPassword.$invalid" class="text-danger">{{'PASSWORD_CONFIRM_VALIDATION' | translate }}</span>
</div>
</div>
我應該如何解決這個問題?
你一定反轉模式和字符串中搜索 –
@GaétanRYCKEBOER是正確的!你得到的錯誤真的表明,輸入的密碼確實被視爲匹配的正則表達式......我不知道角... ng模式來自框架還是你使用onChangePassword()?對於後者,您需要向我們顯示代碼,以便我們可以指出問題所在。 – Salketer
'ng-pattern =「vm.password」',這是confirmPassword輸入字段中的問題。這是沒有必要的,並刪除它的工作。謝謝你們的幫助。 – abhim