javascript从查询构建正则表达式
在我正在开发的网站上,我有一个搜索框,我想在其中加入一个live autosuggest功能。(如果你知道一条比我要走的路线更好的路,请告诉我) 以下是我的想法: 当用户在搜索栏中键入时,触发onchange事件时,我希望将查询发送到服务器(通过ajax或websockets),然后从查询中构建正则表达式(javascript从查询构建正则表达式,javascript,mongodb,node.js,Javascript,Mongodb,Node.js,在我正在开发的网站上,我有一个搜索框,我想在其中加入一个live autosuggest功能。(如果你知道一条比我要走的路线更好的路,请告诉我) 以下是我的想法: 当用户在搜索栏中键入时,触发onchange事件时,我希望将查询发送到服务器(通过ajax或websockets),然后从查询中构建正则表达式(/^SOMELETTERS/gi),然后搜索多个字段(产品名称、品牌、产品编号…),并将它们与正则表达式匹配。我想收集前10个结果,并将它们以json格式发送到客户端,以便在类似于google
/^SOMELETTERS/gi
),然后搜索多个字段(产品名称、品牌、产品编号…),并将它们与正则表达式匹配。我想收集前10个结果,并将它们以json格式发送到客户端,以便在类似于google的autosuggest脚本中使用
以下是我的问题:(1) 有更好的办法吗?
(2) 如果否,我将如何构建一个正则表达式来匹配以任何查询开头的项。。。我的意思是,语法是什么?我尝试了很多方法,但似乎都不起作用。调用RegExp对象的构造函数 如果您有
req.params.q
您可以:
var rx = new Regex(req.params.q);
我不知道为什么要将用户输入视为regexp。用户将键入随机关键字,而不是
(\b| ^)foo[0-9]{2}
:-?我要搜索以用户输入的字符开头的术语。似乎建立一个正则表达式将是最快的搜索方法,不是吗?啊。。。嗯,我不认为对^foo
执行regexp搜索比像'foo%'
更快,因为后者可以使用索引。但我对MongoDB一无所知,也许它没有喜欢。好吧,太棒了,谢谢!我不太了解MongoDB的功能,但当我思考它时,我意识到它可能不会像我希望的那样健壮。所以我想我要试试ApacheSolr来运行搜索。@Stephen:我误解了你的问题。用尼克的回答;它会完全满足你的要求