angularjs 中检测数字是否重复

Detect numbers are Repetitive or not in angularjs

我正在尝试创建一个指令来检测数字是否重复。
这是我的 fiddle :http://jsfiddle.net/7htqdk7y/3/
但这行不通,有什么想法吗?

指令

app.directive('validTel', function () {
    return {
        require: '?ngModel',
        link: function (scope, element, attrs, ngModelCtrl) {
            if (!ngModelCtrl) {
                return;
            }

            ngModelCtrl.$parsers.push(function (val) {
                var clean = val.replace(/[11111111111+22222222222+a-z+@]+/g, '');
                if (val !== clean) {
                    ngModelCtrl.$setViewValue(clean);
                    ngModelCtrl.$render();
                    console.log('hey');
                }
                return clean;
            });

            element.bind('keypress', function (event) {
                if (event.keyCode === 32) {
                    event.preventDefault();
                }
            });
        }
    };
});  

规则是,用户不应输入重复数字,例如:1111111111122222222222
注意: 我有另一个控制数字计数的指令,例如:my-maxlentgh='11'

看来您的正则表达式有误。尝试

var clean = var clean = val.replace(/[a-z+@]+/gi, '').replace(/(((\d){11,11})()*)/g, '');

这里是修改后的 fiddle: http://jsfiddle.net/7htqdk7y/4/

第二个替换限制数字重复超过 11 次 -- 它去除了超出该范围的数字的所有重复。

我认为这是比接受的答案更好的解决方案,因为重复的匹配不会被完全替换,而只会替换我们不允许的部分

Regex to find repeating numbers

你想要的正则表达式是这个:

(1){11,}|(2){11,}|(3){11,}|(4){11,}|(5){11,}|(6){11,}|(7){11,}|(8){11,}|(9){11,}|(0){11,}

意思是:

digit 1: 11 or more times
  or
digit 2: 11 or more times
  etc...

(\d){11,}

表示:您的字符串中有 11 个或更多数字