当使用区分大小写时,为什么deos Regex会失败?

时间:2016-01-19 10:51:28

标签: angularjs regex angularjs-directive angularjs-scope angularjs-ng-repeat

使用区分大小写时,我的正则表达式失败。

这样可以正常使用:var re = new RegExp(types);针对"*pq*"

这会导致出现控制台错误:var re = new RegExp(types, 'i');针对"*pq*"

其次当我与#34; \"通过输入输入字段,它给出了错误原因?

这是我的代码: http://plnkr.co/edit/e5zpSGWPZKPkSrpfSakr?p=preview

var re = new RegExp(types, 'i');
        angular.forEach(items, function(item) {
            if (item.name.match(re)) {
                console.log(item.name.match(types))
                filtered.push(item);
            }
        });

此问题的任何更新?

1 个答案:

答案 0 :(得分:2)

对于过滤,您不应使用 - new RegExp()。因为它不会逃脱在RegEx中具有特殊含义的特殊角色。

\在正则表达式中有特殊含义,还有其他字符需要转义。

赞 - \/可用于转义/。同样,{[等可以转发为\{\[

最佳选择可能是:

angular.forEach(items, function(item) {
    if(item.name.toLowerCase().indexOf(types.toLowerCase()) != -1) {
        console.log("matched")
        filtered.push(item);
    }
});

修改: OP的自定义要求 - Updated Code Plunker