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

无效的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 回答
1

只需将 js 的第 4 行更改为:

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

它将转义文本,搜索将正常工作。

于 2013-07-19T17:17:28.093 回答