Angular正则表达式在输入上测试不一致的ng模式验证
Angular regex test not consistent ng-pattern validation on input
我有一个ng模式验证我的输入
ng-pattern="/^(.+)$/g"
这并不是每次都一样。表现出非常奇怪的行为。
看到plnkr
ngMessage只在每第二个字符I输入时显示。但是控制台正确地评估regex测试。
我在浏览器开发工具中设置了一个断点,在angular中测试正则表达式并在控制台上进行了一些调试。下面是我调试时的控制台输出。当我使用控制台时,调试器没有移动,因此没有更改任何值。(->代表我的输入,<-是调试器输出的)
-> regexp.test(viewValue)
<- false
-> regexp
<- /^(.+)$/g
-> /^(.+)$/g.test(viewValue)
<- true
-> regexp.test(viewValue)
<- true
谁能告诉我发生了什么事?请注意,regexp.test(viewvalue)如何首先为false,然后在最后一次测试中为true,而没有任何更改。
您必须从正则表达式中删除/g
,参见更新后的plunkr。
根据文档:
注意:避免在RegExp上使用
g
标志,因为它将导致每次连续搜索从上次搜索匹配的索引开始,从而不考虑整个输入值。
相关文章:
- regex/ng模式接受某些字符
- 使用angularJs ng模式进行10位Regex验证
- 使用错误的 ng 模式重置 angularjs 表单字段
- 动态添加ng模式,缺少验证类
- 如何仅在字段为$dirty时应用ng模式
- 可以将ng模式与变量一起使用吗
- ng模式验证在safari中不起作用
- 为什么ng模式获胜't对来自非用户输入事件的更改进行正确验证
- 使用ng模式Angularjs进行动态验证
- ng 模式不适用于动态添加的角度输入标签
- 动态形成基于兄弟<选择>选项的ng模式 角度.js
- 寻找正则表达式以匹配 ng 模式中的特定十进制格式
- 在错误消息中访问 ng 模式
- 仅数字的 ng 模式将接受像 “-” 这样的字符,例如 Angular.js
- ng模式来禁止电子邮件、url和电话号码
- ng模式不应与提供的模式匹配
- angularjs输入的ng模式〔email〕没有'没有按预期工作
- 价值的作用=“"在<输入ng模式>
- ng模式第二次未验证
- 动态更改ng模式regex