使用角度js仅允许输入字段中使用逗号分隔的数字

时间:2016-07-25 05:42:09

标签: javascript angularjs regex

我正在使用角度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();
                }
            });
        }
    };

1 个答案:

答案 0 :(得分:2)

删除clean部分并将if条件替换为

if (!/^\d+(?:,\d+)*$/.test(val)) {

此代码会测试给定值是否为1,2,313,4格式。

示例:



console.log(!/^f+$/.test('ff'))

console.log(!/^f+$/.test('df'))




认为你想要这样的东西,

str.replace(/[^\d,]|^,+|,+$|,+(?=,)/gm, '')

PLNKR