我想在输入任何单词时搜索整个字符串,它只匹配第一个字符而不匹配整个字符串和字符串的中间字符。
query.and.push({ or: [{ name: { like: '^' + data.searchTextNEM + '.*', options: 'i' } }, { email: { like: '^' + data.searchTextNEM + '.*', options: 'i' } },{ phone: { like: '^' + data.searchTextNEM + '.*', options: 'i' } }]});
Users.find({where: query, limit: data.limit,skip: data.skip },function(err,res){})
就像我有两个字符串1.mark
和2.denim
一样,如果我键入'm'
,我的回答应该是标记和牛仔布,但只能得到mark
答案 0 :(得分:1)
您可以尝试以下操作:-
name: { ilike: '%' + data.searchTextNEM + '%' }
它也将与不区分大小写的文本匹配。
或:
您可能已经通过了过滤器中的选项:-
?filter={"where":{"title":{"like":"someth.*","options":"i"}}}
答案 1 :(得分:0)
我认为您的正则表达式不正确。如果您插入“ m”,则您的正则表达式将变为^m.*
,表示“以m开头,然后具有任意数量的任何字符”。我认为您想要.*m.*
,意思是“具有任意数量的任意字符,然后是m,然后任意数量的任何字符”:
query.and.push({ or: [{ name: { like: '.*' + data.searchTextNEM + '.*', options: 'i' } }, { email: { like: '.*' + data.searchTextNEM + '.*', options: 'i' } },{ phone: { like: '.*' + data.searchTextNEM + '.*', options: 'i' } }]});
Users.find({where: query, limit: data.limit,skip: data.skip },function(err,res){
})