gpt4 book ai didi

javascript - Mongodb 字符串匹配正则表达式

转载 作者:行者123 更新时间:2023-11-30 11:23:22 26 4
gpt4 key购买 nike

我有一些像下面这样的 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,并且我搜索正则表达式 1.2.2.2,我注意到它总是匹配并返回 1.2.2.22。我觉得这是预料之中的,因为从技术上讲正则表达式正在做它的工作。

但这并不是我们想要的结果。如何进行完整的精确 IP 匹配?

谢谢。

最佳答案

我认为你需要做两件事:

  1. 为 IP 地址添加分隔符
  2. 转义地址中的点

对于 (1) 做:

(^|,)<<the_ip>>(,|$)

这要求 IP 在字符串开头以 (^) 断言或逗号开头,IP 后跟一个逗号或 ($ ) 字符串末尾的断言。

对于(2)用\.替换IP字符串中的点。

"1.2.3.4".replace(/\./g, "\\.")

正则表达式中的点表示“除换行符外的任何字符”,因此如果您不替换它,您可能会意外匹配一些无效字符串(例如 1a1a1a1)。

Demo

关于javascript - Mongodb 字符串匹配正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48947975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com