当模式中有一个字母时,mogodb RegEx返回所有记录

gkd*_*gkd 1 regex mongodb

我在mongodb中有一个集合(RDBMS中的表),其中包含邮件接收者的名称.

名称可能包含普通英文字符或日文字符或两者的组合.

RegExp用来查找与我传递的模式匹配的名称,下面是代码

db.user_logs.find({ "recipientName": new RegExp(".*??*", "i") })
Run Code Online (Sandbox Code Playgroud)

这将返回名称中任何位置包含"汉字"的所有记录

但是当我使用的时候

db.user_logs.find({ "recipientName": new RegExp(".*?*", "i") })

它返回所有记录,无论它是否包含"汉".

我的要求是我只需要那些"汉"存在于任何位置的记录

同样的英语角色正在发生.

nha*_*tdh 5

要检查名称中是否出现某个字符序列1,正则表达式可以像下面这样简单:

db.user_logs.find({ "recipientName": new RegExp("??", "i") })
db.user_logs.find({ "recipientName": new RegExp("?", "i" })
Run Code Online (Sandbox Code Playgroud)

1如果字符串包含元字符(正则表达式中具有特殊含义的字符),则需要转义它们.

i对于中文和日文字符,该标志是多余的,但如果您需要使用拉丁搜索字符串,我会留在那里.

如果正则表达式是固定的,还可以选择使用文字正则表达式:

db.user_logs.find({ "recipientName": /??/ })
db.user_logs.find({ "recipientName": /?/ })
Run Code Online (Sandbox Code Playgroud)

i 旗帜在这里删除,因为你不需要它.