Textarea字符串:一次限制为1个空行

时间:2015-05-28 08:37:23

标签: javascript html regex angularjs textarea

我有一个multivalue textarea,其中每一行代表一个数组值。

我想在按下输入时删除空行(如果通过角度指令执行此操作,则不在按键上)。预期的结果是当时只能存在一个空行。

我正在尝试使用textareStringValue.replace(/\n{2,}/gm, '\n')。但是,根据新线的位置和文本插入位置,替换条件会发生变化。

这可以用一个.replace(regExp)完成吗?

app.directive('noTwolines', function () {

    return {
      restrict: 'A',
      require: '?ngModel',

      link: function (scope, element, attrs, ngModel) {
          if (!ngModel) return;
          ngModel.$parsers.unshift(function (inputValue) {
              var digits = inputValue;
              var textarea= document.getElementById("textarea");
              var val = textarea.value;
              var caretPos = val.slice(0, textarea.selectionStart).length;
              console.log(inputValue.length);
              console.log(val.slice(0, textarea.selectionStart).length);

              if(caretPos === inputValue.length){
                console.log('enter from end');
                digits=  inputValue.replace(/\n{2,}/gm, '\n');
              }
              if(caretPos < inputValue.length && inputValue.indexOf('\n\n') != -1){
                digits=  inputValue.replace(/\n{3,}/gm, '\n');
              }

              ngModel.$setViewValue(digits);
              ngModel.$render();
              return digits;

          });
      }
    };

});

1 个答案:

答案 0 :(得分:0)

/* this replace many empty line to one */     
textareStringValue.replace(/\s*\n/g,"\n")