[英]Mongodb string match regex
我有几个mongodb文档,如下所示:
{
...
ipAddress: "1.2.3.4"
},
{
...
ipAddress: "1.2.3.44,1.2.5.7"
}
ipAddress是一个字符串字段,可以包含许多以逗号分隔的IP。 ( "1.2.3.4,1.3.5.7,2.4.6.8"
等)
我想检索一个与特定IP匹配的mongo文档。 为此,我尝试以下查询:
collection.findOne({
ipAddress: new RegExp (<<the_ip>>)
});
但是,在调试我的应用程序时,我意识到上面的查询匹配并找到任何具有the_ip
东西,而不仅仅是确切的the_ip
例如。 如果我有两个IP为1.2.2.2和1.2.2.22的文档,并且我搜索regexp 1.2.2.2,我注意到它始终匹配并返回1.2.2.22。 我觉得这是预期的,因为从技术上讲,正则表达式正在做它的工作。
然而,这不是理想的结果。 如何进行完全准确的 IP匹配?
谢谢。
我想你需要做两件事:
对于(1)做:
(^|,)<<the_ip>>(,|$)
这要求IP之前是字符串开头的( ^
)断言或逗号,并且该字符串末尾的后跟逗号或( $
)断言。
对于(2)用\\.
替代点\\.
在IP字符串中。
"1.2.3.4".replace(/\./g, "\\.")
正则表达式中的点表示“任何字符但新行”,因此如果不替换它,则可能会意外匹配一些无效字符串(例如1a1a1a1
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.