使用区分大小写时,我的正则表达式失败。
这样可以正常使用: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);
}
});
此问题的任何更新?
答案 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