欢迎访问Ningto's博客

Menu
  • 首页
  • 归档
  • 关于
  • 书签
  • 必应壁纸
  • IT聚合
  • 工具
    • 我的工具列表
    • 我的网盘
    • 必应每日壁纸API
    • Html转Markdown
    • 仙尘光标
Menu

mongodb模糊匹配正则转义

最后更新 2017-11-04 02:42:03   阅读量 3647

如果我要根据标题和内容搜索关键字,可以如下写法:

  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();
};
(转载本站文章请注明作者和出处:泞途 - ningto.com)

下一篇 – 19个JavaScript常用的简写技术
上一篇 – API设计原则(上)

  1. Javascript
  2. MongoDB

toningto@outlook.com

标签云

IOS Qt Life Linux Java MongoDB Boost MQ Node.js Mac C/C++ Tools Design Python Bug Others Javascript Tips React Android Web Mobile Shell Product Go Database Windows

推广链接

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年99元

多谢支持,用了好几年,服务很稳定支持多设备!

其他

文章RSS

Copyright © 2016 Welcome To Ningto Blog | 鄂ICP备17003086号-2