6

在少数情况下,我使用 ng-pattern 来验证我的客户端,例如查看密码复杂性。

现在,我使用 ng-pattern 在我的正则表达式中得到了非常奇怪的匹配。看看下面的例子

<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/>

以上应要求 8 个字符,至少 1 个大写字符和 1 个数字或特殊字符。出于某种原因,我得到了像FaiLoudD这样没有意义的词的匹配。

我在我的 python 后端运行相同的正则表达式,它就像一个魅力。我还使用http://regexpal.com/验证了正则表达式 ,它也很完美。

为什么 ng-pattern 匹配这么奇怪?

更新:

我深入研究了我的应用程序的所有模块和整个构建过程。当我在构建过程中禁用 grunt-html2js 时,ng-pattern 指令再次开始工作。它似乎导致 ng-pattern 错误地解释了正则表达式。由于问题是在 html2js 项目中创建的。有了这个,我将结束这个问题。

4

1 回答 1

5

我深入研究了我的应用程序的所有模块和整个构建过程。当我在构建过程中禁用 grunt-html2js 时,ng-pattern 指令再次开始工作。它似乎导致 ng-pattern 错误地解释了正则表达式。由于问题是在 html2js 项目中创建的。有了这个,我将结束这个问题。

测试了 grunt-html2js 的 0.1.3 和 0.1.6 版本。

更新

在 html2js 项目中创建的问题导致版本 0.1.7 解决了该错误。感谢 karlgoldstein 的快速响应和修复。

于 2013-08-23T17:39:23.770 回答