【发布时间】:2019-05-16 06:35:38
【问题描述】:
我想检查电子邮件是否已在我的 MongoDB 数据库中注册。
我有一个用户注册test123@test.com
但如果我检查 test.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") }
})
如何在不区分大小写的情况下搜索完全匹配?
【问题讨论】:
-
该点匹配除换行符以外的任何字符,因此 1 也将匹配。如果你想从字面上匹配它,你必须像
\.一样逃避它。 -
new RegExp(/test123@test.com\./, "i")我试过了,但它甚至不匹配实际 -
您在电子邮件后添加了一个点。我认为它应该是
new RegExp(/test123@test\.com/, "i"),但如果你想从字面上找到它,为什么要使用正则表达式? -
new RegExp(/test.23@test\.com/, "i")这仍然匹配test123@test.com -
那应该是
new RegExp(/test\.23@test\.com/, "i")还要注意第一个转义点。
标签: regex mongodb mongodb-query