Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs中带有通配符的过滤器_Javascript_Regex_Angularjs - Fatal编程技术网

Javascript angularjs中带有通配符的过滤器

Javascript angularjs中带有通配符的过滤器,javascript,regex,angularjs,Javascript,Regex,Angularjs,我正在尝试使用通配符筛选值列表 searchString=“ab*cd” 应返回所有以“ab”开头、以“cd”结尾的值 到目前为止,我已尝试将字符串拆分为多个子字符串,其中星号为,然后搜索以第一个子字符串开头,同时以第二个子字符串结尾的所有单词(或两个子字符串之一,具体取决于星号的位置) 我在问是否有更好的方法来做这件事 这是搜索以searchString开头的字符串的代码: function escapeRegExp(string){ return string.replace(/([.*+?

我正在尝试使用通配符筛选值列表

searchString=“ab*cd”

应返回所有以“ab”开头、以“cd”结尾的值

到目前为止,我已尝试将字符串拆分为多个子字符串,其中星号为,然后搜索以第一个子字符串开头,同时以第二个子字符串结尾的所有单词(或两个子字符串之一,具体取决于星号的位置)

我在问是否有更好的方法来做这件事

这是搜索以searchString开头的字符串的代码:

function escapeRegExp(string){
return string.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1');
}

$scope.query = '';
var regex;
$scope.$watch('query', function (value) {
regex = new RegExp('\\b' + escapeRegExp(value), 'i');
}

$scope.filterBySearch = function(article) {
if (!$scope.query) return true;
return regex.test(article.title);
};

编写自定义筛选器,如:

iApp.filter('myfilter', function() {
   return function( items, types) {
    var filtered = [];

    angular.forEach(items, function(item) {
       if(types.wildcard == false || item.name.match(types.value)) {
          filtered.push(item);
        }

    });

    return filtered;
  };
});
过滤器应安装在哪里:

$scope.types = {wildcard:false, value: /^ab.*cd$/};
HTML示例


演示

检查此项。
  <tr data-ng-repeat="value in values |  myfilter:types">