Angularjs ng-pattern missbehaviour with regex

时间:2014-10-26 07:14:42

标签: javascript html regex angularjs validation

我有以下带有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 }">

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

那么,有什么建议吗?

1 个答案:

答案 0 :(得分:0)

替换为此代码:

<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执行不区分大小写的匹配。这是您犯了错误