文章标题 原创 翻译 转载 文章内容 如果我要根据标题和内容搜索关键字,可以如下写法: ``` return this.find({ '$or': [ {title: new RegExp(keyword, 'i')}, {content: new RegExp(keyword, 'i')} ] }) .sort({ 'pv': -1 }) .exec(); ``` 但是,keyword关键字有特殊字符如++,假如我要搜索c++关键字就失败了。 这时要对关键字中的特殊字符进行转义,通过正则表达式统一转义,RegExp写法加双斜杠: ``` const keyword = name.replace(/([\^\$\(\)\*\+\?\.\\\|\[\]\{\}])/g, "\\$1"); ``` mongodb正则表达式下面写法,keyword特殊字符转义需要加单斜杠 ``` {title: /keyword/i} ``` 完整代码: ``` PostSchema.statics.searchPost = function(name) { const keyword = name.replace(/([\^\$\(\)\*\+\?\.\\\|\[\]\{\}])/g, "\\$1"); return this.find({ '$or': [ {title: new RegExp(keyword, 'i')}, {content: new RegExp(keyword, 'i')} ] }) .sort({ 'pv': -1 }) .exec(); }; ``` 文章类别 Python Mobile Android Java Shell Life Database Bug Windows IOS Tools Boost Node.js Mac Product Tips C/C++ Golang Javascript React Qt MQ MongoDB Design Web Linux LLM ChatGPT RAG AI 提交