Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Mongodb正则表达式与精确时间不匹配。(点)搜索中_Regex_Mongodb_Mongodb Query - Fatal编程技术网

Regex 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

我想检查电子邮件是否已在我的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(
         {"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”)
请注意第一个转义点。