简体   繁体   English

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

[英]Allow only comma separated numbers in input field using angular js

I am using angular js and below is my code which allows only numbers separated by comma.But regex which I used allows user to enter 1,,,2. 我正在使用angular js,下面是我的代码,该代码只允许用逗号分隔数字。但是我使用的正则表达式允许用户输入1 ,,, 2。

Is there any way so that I can restrict user to enter only one comma after each number? 有什么办法可以限制用户在每个数字后仅输入一个逗号?

Plunker - http://plnkr.co/edit/g1X9ldVuH4ZewAlumM1P?p=preview 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();
                }
            });
        }
    };

Remove the clean part and replace the if condition with, 取下clean部分,并用if条件代替,

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

This code would test whether the given value is in 1,2,3 or 1 or 3,4 formats or not. 该代码将测试给定的值是1,2,3还是13,4格式。

Example: 例:

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

Think you want something like this, 以为你想要这样的东西,

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

PLNKR PLNKR

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM