角度形式的奇怪行为

时间:2015-10-01 18:41:23

标签: javascript regex angularjs validation anguarjs-digest-cycle

我正在使用Angular指令通过正则表达式验证表单。下面给出了代码和HTML的最小表示。

问题: 奇怪的行为如下:表格发出错误,输入为偶数长度,但不是奇数长度的输入。按键示例:

  

a - >有效

     

aa - >无效

     

aaa - >有效

     

aaaa - >无效

在键入和删除字母时都会发生这种情况。 但是,如果我通过aaaa或任何长度均匀的字符串,则表示没有错误。 我怀疑它可能是由于Angular摘要循环,但我无法弄清楚这个问题。

关于我可能想看的内容的任何线索?

代码

这是我的指示:

var valid_input_regex = /^[\w]+$/g;

directives.directive('pn', function() {
return {
    require: 'ngModel',
    link: function(scope, elm, attrs, ctrl) {
        ctrl.$validators.pn = function(modelValue, viewValue) {
            if (!valid_input_regex.test(modelValue)) {
                return false;
            }
            return true;
        };
    }
};
});

并在HTML中

<input type="text" class="form-control" name="name" ng-model="name" pn>
<span ng-show="(form.name.$error.pn && !form.name.$pristine)">Please use plain text or numbers.</span>

1 个答案:

答案 0 :(得分:0)

摆脱&#39; g&#39;在正则表达式的末尾

var valid_input_regex = /^[\w]+$/;

应该工作