我正在使用Angular的內置表單驗證器體驗一些奇怪的驗證行爲。在我的用戶名<input>
字段中,我有一個只允許字母或數字的ng模式(ng-pattern="/[A-Z0-9]/i"
)。使用ng-pattern的Angular中的意外驗證行爲
但驗證並不按照我期望的方式工作。例如,當我輸入一堆符號時,它會識別用戶名輸入無效。 [email protected]#$
。但是,如果我用幾個字母開頭,然後鍵入一串符號(如[email protected]#$
),它將在第一個符號!
上引發驗證錯誤,但是當我鍵入第二個符號@
時,它會將錯誤返回關閉。我輸入的每個第3或第4個符號都會再次打開/關閉錯誤。
我試着看過Angular文檔,但是我沒有看到任何表明我錯誤地執行了ng-pattern
的東西。
下面是代碼:
<form name="signupForm" ng-submit='signup()'>
<input name="nameInput" type='text' ng-model='user.username' ng-pattern = "/[A-Z0-9]/i">
<input name="passwordInput" type="password" ng-model='user.password' ng-pattern = "/[A-Z0-9]/i">
<button>signup</button>
</form>
<span class = 'error' ng-show="signupForm.nameInput.$invalid && signupForm.nameInput.$dirty">Invalid username</span>
_「我有一個只允許使用字母或數字的ng模式」_ - 否。只要其中有一個字母或數字,您就有一個允許任何**的模式。您偶爾會收到一條錯誤消息,因爲\ g標誌允許下一次檢查從最後一次匹配開始,而不是字符串的開始。 – zeroflagL
是的,我的正則表達式不正確。謝謝! – giwook