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();
}
});
}
};
});
规则是,用户不应输入重复数字,例如:11111111111
或 22222222222
注意: 我有另一个控制数字计数的指令,例如: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 个或更多数字
我正在尝试创建一个指令来检测数字是否重复。
这是我的 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();
}
});
}
};
});
规则是,用户不应输入重复数字,例如:11111111111
或 22222222222
注意: 我有另一个控制数字计数的指令,例如: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 个或更多数字