什么应该是正则表达式匹配角度ui网格中的空白单元格?

时间:2017-09-07 08:38:07

标签: javascript angularjs angular-ui-grid

我有一个有角度的ui-grid,其中我有列'注意'可以是空白或非空白。我正在尝试创建一个自定义过滤器来过滤掉空白和非空白。我无法过滤掉列中的空白。该列可能包含null,undefined或'。所有这些在ui-grid中显示为空白。 注意栏如下:

{
      displayName: 'Note',
      enableSorting:true,
      enableFiltering: true,
      enableCellEdit: false,
      width: '10%',
      field: 'note',
      visible: false,
      filterHeaderTemplate: '<div class="ui-grid-filter-container" ng-repeat=\
      "colFilter in col.filters"><div my-custom-dropdown2></div></div>',
      filter: {
        options: ['Blanks','Non-blanks']     // custom attribute that goes with custom directive above
      } 

.directive('myCustomDropdown2', function() {
  return {
    template: '<select class="form-control" ng-model="colFilter.term" ng-change="filterNotes(colFilter.term)" ng-options="option for option in colFilter.options"></select>',
    controller:'NoteController'
  };
})

.controller('NoteController',function($scope, $compile, $timeout){
  $scope.filterNotes = function(input){
    var field = $scope.col.field;
    var notes = _.pluck($scope.col.grid.options.data,field);
    $scope.colFilter.listTerm = [];
    var temp = notes.filter(function(val){if(val && val!=''){return val}});
    $scope.colFilter.listTerm = temp;
    $scope.colFilter.term = input;
    if(input=='Blanks'){
      $scope.colFilter.condition = new RegExp("[\\b]");
    }
    else{
      //for Non-blanks
      $scope.colFilter.condition = new RegExp($scope.colFilter.listTerm.join('|'));
    }
    console.log("$scope.colFilter.condition",$scope.colFilter.condition);
    // console.log("temp",temp);
  }
})

我在this问题中尝试过解决方案等等。没有任何效果。我应该如何创建正则表达式以匹配空白单元格?

1 个答案:

答案 0 :(得分:2)

使用/^(\s)*$/g

\s元字符与字符串中的空格字符匹配。 \s相当于[ \f\n\r\t\v\u00a0\u1680\u180e\u2000\u200a\u2028\u2029\u202f\u205f\u3000\ufeff],因此它涵盖了空格,制表符,换行符等。

^n量词匹配字符串开头的任何字符组合n

n$量词匹配字符串末尾的任何字符组合n

因此,如果您使用/^\s$/,则您希望字符串只包含一个空格。

n*量词匹配任何包含0或更多前面n表达式的字符组合。

因此,如果您使用/^(\s)*$/,您希望该字符串应为空,或包含任意数量的空格(但不包含任何其他内容)。

我为我的投资组合制作了regexp tutorial,因此您可以在那里使用大量默认或自己的正则表达式样本和文本样本进行实验。

修改 这里似乎没有g标志,我写的很匆忙。 所以你可以使用/^(\s)*$/