首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用字符分隔数字

用字符分隔数字
EN

Stack Overflow用户
提问于 2020-04-15 05:49:29
回答 1查看 41关注 0票数 0

我试着做一些基本的角度形式验证。

代码语言:javascript
复制
<input type="text" class="form-control" id="bank-name" name="scode" ng-class="{ 'error' : (form.scode.$invalid && form.scode.$touched) }" maxlength="6" required numbers-only/>
              <div ng-show="form.$submitted || form.scode.$touched">
                <p class="error" ng-show="form.bankname.$error.required">
                  scode is required.
                </p>
              </div>

到目前为止还不错。输入只接受数字,并且有最大长度,因为我对它使用了一个指令。

数字专用指令

代码语言:javascript
复制
(function() {
   angular.module('app').directive('numbersOnly', function() {
      return {
         require : 'ngModel',
         link : function(scope, element, attrs, ngModelCtrl) {
             function insertdash(val) {
           var count = 2;
           var i = 0;
           if (val.length > 2) { return val.replace(/(\d{2})/g, function(match, capture) {
              return (i++ < count) ? capture + '-' : capture;
           }); }

        }
            function fromUser(text) {
               if (text) {
                  var transformedInput = text.replace(/[^0-9]/g, '');
                  if (transformedInput !== text) {
                     ngModelCtrl.$setViewValue(transformedInput);
                     ngModelCtrl.$render();
                  }
                  return insertdash(transformedInput);
               }
               return undefined;
            }
            ngModelCtrl.$parsers.push(fromUser);
         }
      }
   });
})();

**

问题,,在捆绑的时候,我需要把数字分开,就像这样,11-11-11。我认为我需要使用regex,我对它知之甚少。

编辑:,我尝试过使用插入破折号函数,但它似乎也不起作用

EN

回答 1

Stack Overflow用户

发布于 2020-04-15 07:21:15

您可以使用这个简单的函数来完成它:

代码语言:javascript
复制
function chunk(str, n) {
    var ret = [];
    var i;
    var len;

    for(i = 0, len = str.length; i < len; i += n) {
       ret.push(str.substr(i, n))
    }

    return ret
};
chunk("11111111", 2).join('-');

示例:

代码语言:javascript
复制
function chunk(str, n) {
    var ret = [];
    var i;
    var len;

    for(i = 0, len = str.length; i < len; i += n) {
       ret.push(str.substr(i, n))
    }

    return ret
};

var numbers = 111111111111;
var result1 = chunk(numbers.toString(), 2).join('-');

var numbersAsString = "111111111111"
var result2 = chunk(numbersAsString, 2).join('-');

console.log("result1: ", result1)
console.log("result2: ", result2)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61222136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档