Angularjs ui utils在搜索时突出显示过滤器中断应用程序

时间:2015-04-10 06:21:51

标签: javascript regex angularjs angular-ui angularjs-ui-utils

我正在使用Angular ui-utils高亮过滤器,我有以下代码:

<span data-ng-bind-html="organization.level1Name | highlight:vm.search"></span>

当我使用特殊字符搜索时,如[或(我得到角度异常和应用程序中断。

  

SyntaxError:无效的正则表达式:/(/:未终止的组       在新的RegExp(原生)       在v。(http://localhost:50463/EIA/source/dist/vendor.min.js:72:1157)       在我(http://localhost:50463/EIA/source/dist/vendor.min.js:38:92754)       在cr。| (http://localhost:50463/EIA/source/dist/vendor.min.js:38:86832)       在h.constant(http://localhost:50463/EIA/source/dist/vendor.min.js:38:92126)       在Object.e(http://localhost:50463/EIA/source/dist/vendor.min.js:38:101832)       在v。$ digest(http://localhost:50463/EIA/source/dist/vendor.min.js:38:57280)       at v。$ apply(http://localhost:50463/EIA/source/dist/vendor.min.js:38:58986)       在http://localhost:50463/EIA/source/dist/client.js:1007:31       在http://localhost:50463/EIA/source/dist/vendor.min.js:38:64888未定义

我尝试过使用ng-sanitize库但仍然遇到同样的错误。

拜托,我怎么解决这个问题?

1 个答案:

答案 0 :(得分:1)

您应该escape your RegExp输入,因为(是正则表达式的特殊字符:

function escapeRegExp(str) {
  return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}

然后,只需使用它:

new RegExp(escapeRegExp(search), 'gi')