【问题标题】:Angularjs ng-pattern missbehaviour with regexAngularjs ng-pattern misbehaviour with regex
【发布时间】:2014-10-26 07:14:42
【问题描述】:

我有以下带有 angularJs 的 html:

<input id="subjectCode"
                       name="subjectCode"
                       class="form-control input-md"
                       required
                       type="text"
                       ng-model="subjectCode"
                       ng-minlength="3"
                       ng-pattern="/^[A-Z0-9]+$/i">

上面的代码验证文本输入与至少 3 个字符(应该是 A-Z 大写字母或数字 0-9)。这经过验证以显示错误并设置 css 以突出显示不匹配,如下所示:

<div class="form-group"
             ng-class="{ 'has-error':
                            myform.subjectCode.$invalid
                             && fahrasform.subjectCode.$dirty,
                        'has-success':
                            !myform.subjectCode.$invalid
                            && fahrasform.subjectCode.$dirty }">

问题是,如果我使用小写字母,angularjs 不会将 $invalid 设置为 true,而对于输入国际字母或特殊字符等其他情况,它将设置为 false。

那么,有什么建议吗?

【问题讨论】:

  • 我正在使用 ng-minlength angularjs 指令来限制字符数。

标签: javascript html regex angularjs validation


【解决方案1】:

替换为以下代码:

<input id="subjectCode"
                       name="subjectCode"
                       class="form-control input-md"
                       required
                       type="text"
                       ng-model="subjectCode"
                       ng-minlength="3"
                       ng-pattern="/^[A-Z0-9]*$/">

ng-pattern="/^[A-Z0-9]+$/i" 在这个正则表达式中/i 执行不区分大小写的匹配。那是你做错了

【讨论】:

  • 是的,这就是问题的根源
猜你喜欢
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-03
相关资源
最近更新 更多