Regex Mongodb正则表达式与精确时间不匹配。(点)搜索中
我想检查电子邮件是否已在我的MongoDB数据库中注册。Regex Mongodb正则表达式与精确时间不匹配。(点)搜索中,regex,mongodb,mongodb-query,Regex,Mongodb,Mongodb Query,我想检查电子邮件是否已在我的MongoDB数据库中注册。 我有一个用户注册了test123@test.com 但是如果我检查测试。23@test.com它仍然与test123@test.com 我尝试了以下查询 db.getCollection('users').find( {"email":{ $regex: new RegExp(test.23@test.com, "i") } }) db.getCollection('users').find( {"emai
我有一个用户注册了
test123@test.com
但是如果我检查
测试。23@test.com
它仍然与test123@test.com
我尝试了以下查询
db.getCollection('users').find(
{"email":{ $regex: new RegExp(test.23@test.com, "i") }
})
db.getCollection('users').find(
{"email":{ $regex: new RegExp(/test.23@test.com/, "i") }
})
db.getCollection('users').find(
{"email":{ $regex: new RegExp(/^(test.23@test.com)$/, "i") }
})
db.getCollection('users').find(
{"email":{ $regex: new RegExp(/^(test.23@test\.com)$/, "i") }
})
如何使用不区分大小写的方法搜索精确匹配?您不需要使用正则表达式。从v3.4开始对Mongodb的支持
db.getCollection('users').find(
{"email":"test.23@test.com"}
).collation(
{locale:"en", strength: 1}
)
将匹配“测试”。23@test.com“,”测试。23@TEST.COM“以及介于两者之间的任何东西
作为一个旁注,将用户的输入直接传递到regex查询,有一天您可能会丢失服务器。如果您决定继续使用正则表达式方法,您可以在从正则表达式语法中转义括号、括号、转义字符和其他特殊符号时转义点。该点匹配除换行符以外的任何字符,因此1也将匹配。如果你想逐字地匹配它,你必须像
\.
新的RegExp一样转义它(/test123@test.com\./,“i”)
我试过了,但实际上都不匹配。你在电子邮件后加了一个点。我想应该是newregexp(/test123@test\.com/,“i”)
但是如果你想从字面上找到它,为什么要使用regex?新的RegExp(/test)。23@test\.com/,“i”)
这仍然匹配test123@test.com
应该是newregexp(/test\)。23@test\.com/,“i”)
请注意第一个转义点。