Javascript 为什么当用户单击搜索按钮时屏幕会弹出?
当用户从页面搜索文本时,屏幕为什么会弹出。 我会解释这个问题。 点击按钮,我进入下一页。在下一页有搜索功能实现,但当用户搜索此文本时,它会弹出屏幕并转到上一页。我想我的申请要崩溃了 这些文件如下: 1)“(+?)” 2) q(?=u), 3)q(?!u) 3) (?)? 您能告诉我如何删除此崩溃。这是我的代码Javascript 为什么当用户单击搜索按钮时屏幕会弹出?,javascript,jquery,regex,Javascript,Jquery,Regex,当用户从页面搜索文本时,屏幕为什么会弹出。 我会解释这个问题。 点击按钮,我进入下一页。在下一页有搜索功能实现,但当用户搜索此文本时,它会弹出屏幕并转到上一页。我想我的申请要崩溃了 这些文件如下: 1)“(+?)” 2) q(?=u), 3)q(?!u) 3) (?)? 您能告诉我如何删除此崩溃。这是我的代码 这不起作用。无效的RegExp模式将引发异常。只需: 如果您想支持使用保留字符的查询,请自行转义它们,因为javascript以错误的方式执行此操作,例如,(变成%28,而不是\()。您
这不起作用。无效的
RegExp
模式将引发异常。只需:
如果您想支持使用保留字符的查询,请自行转义它们,因为javascript以错误的方式执行此操作,例如,(
变成%28
,而不是\(
)。您可以事先执行类似操作:
searchTerm = searchTerm.replace(/([\(\)\.\+\?])/g, '\\$1');
只需将js的第4行更改为:
var searchTermRegEx = new RegExp('('+escape(searchTerm)+')', "ig");
它将转义文本,搜索将正常工作。这些是正则表达式语法的保留字符,因此它当然会中断您的搜索。您需要转义这些字符。但它不是搜索-…?这是我的小提琴,请检查Matthias的答案(我也编辑了一点)。
searchTerm = searchTerm.replace(/([\(\)\.\+\?])/g, '\\$1');
var searchTermRegEx = new RegExp('('+escape(searchTerm)+')', "ig");