$regex为含糊查问的字符串提供正则表达式性能,MongoDB应用Perl兼容正则表达式
//通过条件查找,反对username含糊搜寻并分页 findAdminByParamsAndPageHasFuzzy(params, pager) { if (params.username) { let pattern = new RegExp(params.username); params.username = { $regex: pattern, $options: 'imxs' }; } if (params.orgname) { let pattern = new RegExp(params.orgname); params.orgname = { $regex: pattern, $options: 'imxs' }; } if (params.adminRoles) { params.adminRoles = mongoose.Types.ObjectId(params.adminRoles); } AdminHandler.searchParamsClearEmptyValue(params); return Promise.all([ adminModel.find(params, { password: 0 }).count().exec(), adminModel.find(params, { password: 0 }).sort({ _id: -1 }).populate("adminRoles").skip((pager.pageIndex - 1) * pager.pageSize).limit(pager.pageSize).exec() ]) }
RegExp 对象用于存储检索模式。通过 new 关键词来定义 RegExp 对象
RegExp 对象有 3 个办法:test()、exec() 以及 compile()
- test() 办法检索字符串中的指定值。返回值是 true 或 false;
- exec() 办法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null
var patt1=new RegExp("e");document.write(patt1.exec("The best things in life are free"));
- compile() 办法用于扭转 RegExp。compile() 既能够扭转检索模式,也能够增加或删除第二个参数;
var patt1=new RegExp("e");document.write(patt1.test("The best things in life are free"));patt1.compile("d");document.write(patt1.test("The best things in life are free"));