不匹配正则表达式的电子邮件

问题描述:

不知道我在做这个权利。不匹配正则表达式的电子邮件

var re = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 

db.test.find({ "Email" : { $regex : re}}).count() 

这返回的500文件数我希望......但集合中的1000个文档,有意识地500个无效的电子邮件地址。是的,我可以做数学,但我实际上最终想要检索所有不良地址。怎么样?

db.test.find({ "Email" : {$not:{ $regex : re}}}) 

给我,我本来预计在产生光标

Error: error: { 
    "ok" : 0, 
    "errmsg" : "$not cannot have a regex", 
    "code" : 2, 
    "codeName" : "BadValue" 
} 
当然

500个文件错误,文件似乎支持$正则表达式的想法并不支持为$一部分不。 “re”变量的语法已经非常复杂。

在本地mongo/javascript中,如何根据复杂的正则表达式查询其电子邮件元素不是有效电子邮件地址的文档集合,我该做些什么?

对mongo来说相当陌生...错过了sql服务器......但愿意并热心地为客户提供这个解决方案,以满足它为这个项目提供的诸多伟大事物。

感谢您提供任何洞察力(全部)或许能够提供。

迈克

您的查询功能,按照该文档,你可以把一个正则表达式为$not表达。

这将返回与您的正则表达式不匹配的所有电子邮件地址。

db.test.find({ Email: { $not: re } })

https://docs.mongodb.com/manual/reference/operator/query/not/

+0

有趣的是这是实际可行的。因此,明确包含'$ regex'似乎是个问题。 –

+0

正确...我的意思是$ not,正则表达式是$ regex,而不是一般的表达式。显然这种解决方案工作得很好......虽然我发誓我尝试了它......事实上,我以为我曾尝试过使用文字正则表达式字符串,而不是变量,它失败了......但只是再试一次,它的工作精细。感谢88指出我显然只是一个白痴......解决方案工作得很好。我想我还有很多东西需要学习。现在,让这个工作在Java中:) –