我的输入上有一个ng-pattern验证
ng-pattern="/^(.+)$/g"
每次都不一样。并显示非常奇怪的行为。
请参阅plnkr
ngMessage仅显示在我键入的每个第二个字符上。但控制台正确评估了正则表达式测试。
我在浏览器开发工具中设置了一个断点,该工具位于角度线上,用于测试正则表达式并在控制台中进行一些调试。这是我调试的控制台输出。我使用控制台时调试器没有移动,因此没有更改任何值。 ( - >代表我的输入,< - 是调试器吐出的内容)
-> regexp.test(viewValue)
<- false
-> regexp
<- /^(.+)$/g
-> /^(.+)$/g.test(viewValue)
<- true
-> regexp.test(viewValue)
<- true
有人可以告诉我发生了什么事吗?注意regexp.test(viewvalue)首先是假的,然后在最后一次测试中是真的,没有任何变化。
答案 0 :(得分:2)
您必须从正则表达式中删除/g
,请参阅updated plunkr。
根据docs:
注意:避免在RegExp上使用
g
标志,因为它会导致每次连续搜索从最后一次搜索匹配的索引开始,因此不会将整个输入值考虑在内。