[英]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.