如何在mongo $ regex中添加特殊字符

问题描述 投票:0回答:3

我想在mongo中的字符串字段中查找“\ r \ n”,并且我知道这个,看起来效果很好:

db.users.findOne({"username" : {$regex : ".*son.*"}});

问题是,我想寻找“\ r”,我可以找到它,我知道它在那里,所以我只是做了:

db.users.findOne({"username" : {$regex : ".*\r.*"}});

并且它不起作用,我该如何解决这个问题?

示例文件:

{
    "personId" : 1,
    "personName" : "john",
    "address" : {
        "city" : "Rue Neuve 2\\r\\rue Pré-du-Mar \\r ché 1 1003 Lausanne",
        "street" : "",
        "zipCode" : "",
        "streetNumber" : ""
    }
}

所以我的查询是:

db.users.findOne({"address.city" : {$regex : ".*\r.*"}});

还尝试过:

db.users.findOne({"address.city" : {$regex : ".*\\r.*"}});
regex mongodb regular-language
3个回答
0
投票

尝试

db.users.findOne({"username" : {$regex : ".*\\r.*"}});

0
投票

我认为你的问题是你最后有你的。*倒退。你正在寻找一个“2.” literal后跟任何字符,而不是你在开头时所拥有的字符,。*,在字面之前说任何不是回车符的内容。尝试将此更改为

db.users.findOne({"username" : {$regex : ".*\\r*."}});

在文字之前的任何非回车字符和文字之后的任何非回车符号中都说“\ r”。


0
投票

我发现这样做的方法是:

db.users.findOne({"username" : {$regex : ".*\\\\.*"}});
© www.soinside.com 2019 - 2024. All rights reserved.