我的jsp页面中有一个搜索框。当用户在搜索框中键入内容时,将显示建议列表。
我有类似下面的代码,它会动态生成建议列表
sampleQuery.replace(new RegExp("("+query+")","ig"),'Foo'); ...(1)
现在查询对象是用户在搜索框中键入的字符串。当我在firebug中输入类似“?Foo”的内容时,它会在第1行出现javascript错误。我怀疑“?”是正则表达式的一部分,这就是它抛出错误的原因。
我如何解决问题?
答案 0 :(得分:1)
你可以事先:
?*|.
等)由于后者更容易,我会给你一个例子:
query = query.replace(/[^a-zA-Z0-9]/g, "\\$&");
sampleQuery.replace(new RegExp("("+query+")","ig"),'Foo'); ...(1)
文本a?b|.c
生成a\?b\|\.c
。
答案 1 :(得分:0)
通过Google搜索javascript escape regexp
,查看我找到的以下页面:
答案 2 :(得分:0)
?通常是一个正则表达式字符,意思是“零或一个前面的字符”,并且因为?Foo没有前面的字符,它可能会抛出你的错误。你可以用\:“\?Foo”前缀。