1

Angular ui-utils ハイライト フィルターを使用しており、次のコードがあります。

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

[ や ( などの特殊文字を使用して検索すると、Angular 例外が発生し、アプリケーションが中断されます。

SyntaxError: 無効な正規表現: /(/: v. ( http://localhost:50463/EIA/source/dist/vendor.min.js:72:1157 ) の新しい RegExp (ネイティブ) で終了していないグループ ( http ://localhost:50463/EIA/source/dist/vendor.min.js:38:92754 ) at 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 ) で v.$apply ( http:// localhost:50463/EIA/source/dist/vendor.min.js:38:58986 ) でhttp://localhost:50463/EIA/source/dist/client.js:1007:31 at http://localhost:50463/EIA/source/dist/vendor.min.js:38:64888未定義

ng-sanitize ライブラリを使用してみましたが、それでも同じエラーが発生します。

どうすれば解決できますか?

4

1 に答える 1

1

は正規表現の特殊文字であるため、RegExp入力をエスケープする必要があります。(

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

次に、それを使用します。

new RegExp(escapeRegExp(search), 'gi')
于 2015-04-10T11:52:01.583 に答える