我在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") })
它返回所有记录,无论它是否包含"汉".
我的要求是我只需要那些"汉"存在于任何位置的记录
同样的英语角色正在发生.
要检查名称中是否出现某个字符序列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 旗帜在这里删除,因为你不需要它.
| 归档时间: |
|
| 查看次数: |
225 次 |
| 最近记录: |