匹配 angular ui-grid 中的空白单元格的正则表达式应该是什么?
what should be regular expression to match blank cells in angular ui-grid?
我有一个 angular ui-网格,其中有列 'note',可以是空白或非空白。我正在尝试创建一个自定义过滤器来过滤掉空白和非空白。我无法过滤掉列中的空白。该列可能包含 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 问题中给出的解决方案等等。没有任何效果。我应该如何创建正则表达式以仅匹配空白单元格?
使用/^(\s)*$/g
.
\s
元字符匹配字符串中的白色 space 字符。 \s
相当于[ \f\n\r\t\v\u00a0\u1680\u180e\u2000\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]
,所以覆盖了白色space、制表符、换行等
^n
量词匹配字符串开头的任何字符组合 n
。
n$
量词匹配字符串末尾的任何字符组合 n
。
因此,如果您使用 /^\s$/
,您预计该字符串应该只包含一个白色-space.
n*
量词匹配包含前面 n
表达式 0 次或多次出现的任何字符组合。
因此,如果您使用 /^(\s)*$/
,您希望字符串应该为空,或者包含任意数量的白色 space(但没有其他内容)。
我为我的投资组合制作了 regexp tutorial,因此您可以在那里使用大量默认或您自己的正则表达式样本和文本样本进行试验。
编辑:
g
flag 在这里好像是不需要的,我写的很匆忙。
所以你可以使用 /^(\s)*$/
.
我有一个 angular ui-网格,其中有列 'note',可以是空白或非空白。我正在尝试创建一个自定义过滤器来过滤掉空白和非空白。我无法过滤掉列中的空白。该列可能包含 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 问题中给出的解决方案等等。没有任何效果。我应该如何创建正则表达式以仅匹配空白单元格?
使用/^(\s)*$/g
.
\s
元字符匹配字符串中的白色 space 字符。 \s
相当于[ \f\n\r\t\v\u00a0\u1680\u180e\u2000\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]
,所以覆盖了白色space、制表符、换行等
^n
量词匹配字符串开头的任何字符组合 n
。
n$
量词匹配字符串末尾的任何字符组合 n
。
因此,如果您使用 /^\s$/
,您预计该字符串应该只包含一个白色-space.
n*
量词匹配包含前面 n
表达式 0 次或多次出现的任何字符组合。
因此,如果您使用 /^(\s)*$/
,您希望字符串应该为空,或者包含任意数量的白色 space(但没有其他内容)。
我为我的投资组合制作了 regexp tutorial,因此您可以在那里使用大量默认或您自己的正则表达式样本和文本样本进行试验。
编辑:
g
flag 在这里好像是不需要的,我写的很匆忙。
所以你可以使用 /^(\s)*$/
.