如何在回送查询中在整个字符串中搜索字符串

时间:2019-06-20 10:00:23

标签: javascript regex loopback

我想在输入任何单词时搜索整个字符串,它只匹配第一个字符而不匹配整个字符串和字符串的中间字符。

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.mark2.denim一样,如果我键入'm',我的回答应该是标记和牛仔布,但只能得到mark

2 个答案:

答案 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){
})