我正在使用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库但仍然遇到同样的错误。
拜托,我怎么解决这个问题?
答案 0 :(得分:1)
您应该escape your RegExp输入,因为(
是正则表达式的特殊字符:
function escapeRegExp(str) {
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
然后,只需使用它:
new RegExp(escapeRegExp(search), 'gi')