角度正则表达式测试不是对输入进行一致的ng模式验证

时间:2016-11-17 06:38:10

标签: javascript angularjs regex

我的输入上有一个ng-pattern验证

ng-pattern="/^(.+)$/g"

每次都不一样。并显示非常奇怪的行为。

请参阅plnkr

ngMessage仅显示在我键入的每个第二个字符上。但控制台正确评估了正则表达式测试。

我在浏览器开发工具中设置了一个断点,该工具位于角度线上,用于测试正则表达式并在控制台中进行一些调试。这是我调试的控制台输出。我使用控制台时调试器没有移动,因此没有更改任何值。 ( - >代表我的输入,< - 是调试器吐出的内容)

-> regexp.test(viewValue)
<- false

-> regexp
<- /^(.+)$/g

-> /^(.+)$/g.test(viewValue)
<- true

-> regexp.test(viewValue)
<- true

有人可以告诉我发生了什么事吗?注意regexp.test(viewvalue)首先是假的,然后在最后一次测试中是真的,没有任何变化。

1 个答案:

答案 0 :(得分:2)

您必须从正则表达式中删除/g,请参阅updated plunkr

根据docs

  

注意:避免在RegExp上使用g标志,因为它会导致每次连续搜索从最后一次搜索匹配的索引开始,因此不会将整个输入值考虑在内。