2

ユーザーがページからテキストを検索すると画面がポップするのはなぜですか。問題を説明します。ボタンをクリックすると、次のページに移動します。次のページには検索機能の実装がありますが、ユーザーがこのテキストを検索すると、画面がポップして前のページに移動します。アプリケーションがクラッシュしていると思います。

これらの次のテキスト 1 ) "(+?)"

2) q(?=u)、3) q(?!u)

3) (?

このクラッシュを解消する方法を教えてください。これが私のコードです..

http://jsfiddle.net/ravi1989/4BAau/6/

    var searchTermRegEx = new RegExp('('+searchTerm+')', "ig");

これは動作しません。

4

2 に答える 2

1

js の 4 行目を次のように変更するだけです。

 var searchTermRegEx = new RegExp('('+escape(searchTerm)+')', "ig");

テキストがエスケープされ、検索が正しく機能します。

于 2013-07-19T17:17:28.093 に答える
1

無効なRegExpパターンは例外をスローします。キャッチして解決するだけです:

var searchTermRegEx, matches, selector = selector || "#realTimeContents";
try {
    searchTermRegEx = new RegExp('('+searchTerm+')', "ig");
} catch (e) {
    return false;
}

予約文字を使用するクエリをサポートしたい場合は、javascriptエスケープ(が間違った方法で行う%28ため、自分でエスケープしてください\(。事前に次のようなことを行うことができます。

searchTerm = searchTerm.replace(/([\(\)\.\+\?])/g, '\\$1');
于 2013-07-19T17:13:30.640 に答える