如何使用Java从MongoDB中获取不区分大小写的字母数字电子邮件

问题描述

例如,我需要搜索“ abc-def+1@email.com”。现在,电子邮件输入对用户是区分大小写的,并且应与“ Abc-Def+1@gmail.com”匹配 我尝试使用正则表达式,但在+和-之间不能使用它。 请帮忙。

解决方法

+.是正则表达式中的特殊字符,需要转义以符合您的期望。

如果您的正则表达式为/abc-def+1@gmail.com/i,则它将匹配至Abc-Def,然后在+上失败。在正则表达式中,+表示匹配前一个字符的1 or more。因此,在这种情况下,它正在寻找至少一个f,然后是1。为避免这种情况,您可以像这样:\放在+前面的/abc-def\+1@gmail.com/i

.字符将与任何字符匹配,并且可能会给您带来与您想要的结果不同的结果。如果我们使用上一个正则表达式/abc-def\+1@gmail.com/i,则可以看到.尚未转义。这意味着它可以匹配abc-def+1@gmailgcom之类的字符串。就像以前一样,需要对此进行转义,以产生如下正则表达式:/abc-def\+1@gmail\.com/i

似乎您要为此查询输入用户信息,因此在查询数据库之前,您需要转义出现的所有特殊字符。