我正在使用角度js,下面是我的代码,它只允许用逗号分隔的数字。但我使用的正则表达式允许用户输入1 ,,, 2。
有没有什么方法可以限制用户在每个号码后只输入一个逗号?
Plunker - http://plnkr.co/edit/g1X9ldVuH4ZewAlumM1P?p=preview
function NumberValidator() {
return {
require: '?ngModel',
link: function(scope, element, attrs, ngModelCtrl) {
if (!ngModelCtrl) {
return;
}
ngModelCtrl.$parsers.push(function(val) {
var clean = val.replace(/[^\d+(,\d+)*$]/g, '');
if (val !== clean) {
ngModelCtrl.$setViewValue(clean);
ngModelCtrl.$render();
}
return clean;
});
element.bind('keypress', function(event) {
if (event.keyCode === 32) {
event.preventDefault();
}
});
}
};
答案 0 :(得分:2)
删除clean
部分并将if条件替换为
if (!/^\d+(?:,\d+)*$/.test(val)) {
此代码会测试给定值是否为1,2,3
或1
或3,4
格式。
示例:的
console.log(!/^f+$/.test('ff'))
console.log(!/^f+$/.test('df'))

认为你想要这样的东西,
str.replace(/[^\d,]|^,+|,+$|,+(?=,)/gm, '')