首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用猫鼬寻找phoneNumber正则表达式

用猫鼬寻找phoneNumber正则表达式
EN

Stack Overflow用户
提问于 2021-09-28 10:30:44
回答 2查看 354关注 0票数 0

我正在尝试构建一个查询,以便在phoneNumber中找到MongoDB。例如,我的数据库中有这样的数字:

  • +33671974813
  • +33.6.71.97.48.13
  • +33 6 71 97 48 13

我想在一个查询中找到它们

代码语言:javascript
复制
mobilePhone: { $regex: "+3367197", $options: "i" }

我已经试过了,但没有用:

代码语言:javascript
复制
mobilePhone: { $regex: "+3367197", $options: "i", $in: [/^\+?[\d\. ]+/] }

你知道怎么做吗?

谢谢你的帮助;)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-28 12:26:04

我认为你应该从糟糕的格式化电话中清除数据库。也不允许坏的格式化电话进入数据库,在插入前清理它们。

bellow查询在格式错误的电话中工作。

第一步是清洁电话(只保留数字和+符号,如果在前面)。然后做你想要的匹配。

您可以使用清理电话的第一部分清除所有数据库,并使用管道更新(如updateMany({},[{"$set" ...}]) )。

此外,当您试图匹配时,您应该转义正则表达式特殊字符,例如,不是{regex : "+33.."},而是{regex : "\\+33"},如下面的示例所示。

对于那些自动查看这个答案也是的函数,

查询

这里的测试代码

代码语言:javascript
复制
db.collection.aggregate([
  {
    "$set": {
      "phone": {
        "$reduce": {
          "input": {
            "$regexFindAll": {
              "input": "$phone",
              "regex": "^\\+|\\d+"
            }
          },
          "initialValue": "",
          "in": {
            "$concat": [
              "$$value",
              "$$this.match"
            ]
          }
        }
      }
    }
  },
  {
    "$match": {
      "$expr": {
        "$regexMatch": {
          "input": "$phone",
          "regex": "\\+3367197"
        }
      }
    }
  }
])
票数 1
EN

Stack Overflow用户

发布于 2022-05-17 16:20:10

.aggregate()解决方案很棒,而且会工作的!但是afaik it 将在使用MongoDB的后端查询中添加性能成本。

另一种方法是在搜索值的每个数字之间使用“神奇的正则分隔符”

分隔符:\D*

  • \D的意思是“匹配任何不是数字的单个字符(与^0-9相同)”。
  • *的意思是“零或多个匹配”

因此,如果用户正在搜索123567,而db有123-567,那么最终您将查找regex:

  • 1\D*2\D*3\D*5\D*6\D*7\D*

这样,在DB中的数字之间出现的任何其他字符(括号、破折号等)使用修改的正则表达式忽略。而且不需要进行额外的聚合。

实际代码如下所示:new RegExp(search.replace(/\D/g, '').split('').join('\\D*'), 'i')

  • 您可以看到,我们首先从搜索值中替换/删除所有非数字.

希望这能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69360098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档