[英]AngularJS - ng-pattern on a form failing for certain special symbols such as the dollar sign
我正在用AngularJS 1.5編寫應用程序。 我正在嘗試編寫一項功能,以便用戶可以在應用程序中驗證其密碼,並且我正在使用ng-messages來嘗試驗證表單。
我的來源有2個字段:密碼和確認密碼。 這兩個驗證條件是:兩個密碼都是必需的,並且密碼必須匹配。
我的問題是模式匹配對於某些特殊字符失敗。 美元符號失敗,但並非所有特殊字符都失敗。 我需要它來處理所有角色。
這是我的JSFiddle: http : //jsfiddle.net/aubz88/gm0obnqf/69/
一個代碼片段:
<div>
<label
class="item"
ng-class="{ 'has-error' : vm.verifyPassword.password.$invalid && (vm.verifyPassword.$submitted || vm.verifyPassword.$dirty) }">
<span class="input-label">Password</span>
<input
id="password"
type="password"
name="password"
ng-model="vm.data.password"
placeholder="password"
required>
</label>
</div>
問題是您的JSFiddle中的這一行將vm.data.password(作為字符串)傳遞給ng-pattern。
ng-pattern="vm.data.password"
根據ngPattern的Arguments部分的文檔https://docs.angularjs.org/api/ng/directive/ngPattern#ngPattern-arguments :
“必須計算為RegExp或可解析為RegExp或String或RegExp文字的String的AngularJS表達式。”
因此AngularJS將您的輸入解析為正則表達式,這就是為什么某些符號失敗的原因,例如$(美元符號),因為$是正則表達式中的保留關鍵字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.