我已经写了一个查询Mongo来搜索电话号码。 问题是电话条目是String而不是Number 起初我以为它可以正常工作,但是现在我意识到,如果查询的格式不正确,它将无法匹配。

所以我想我的问题是,不管格式如何,匹配电话号码的最简单方法是什么?

最坏的情况是,我使用$ where语句,并通过从两个值中删除数字并对其进行正则表达式匹配来检查是否相等。 只是想知道是否有更优化的方法来做到这一点?

===============>>#1 票数:2 已采纳

我首先将规范化的电话号码(例如,去除非数字字符或格式化为标准格式)存储在数据库中,因为尚未对其进行规范化,因此对于每个搜索请求即时进行此操作将非常昂贵,因此,如果您还没有太多条目(例如,如果仍在开发中),那么一个脚本将对所有条目进行一次标准化(如果您有生产系统,则可以在非公开时间内数批处理)可能的。

然后,您的where子句将仅对输入进行规范化,然后搜索将容易得多。

顺便说一句,地址也一样,您必须规范化数据以执行良好的搜索,或者必须开发一些模糊匹配算法,这只会变得更慢。 (并且可能会花费您比您想象的更多的时间)

  ask by AlbertEngelB translate from so

未解决问题?本站智能推荐:

1回复

javascript正则表达式:匹配电话号码

如何在Javascript中匹配此电话号码? 我敢打赌,有人可以在2秒内回答这个问题。 搜寻问题对我没有帮助。 更新 也尝试不使用引号: 最终,我试图用另一个号码代替电话号码。
1回复

RegExp在查询中匹配电话号码格式的问题

我正在尝试为MySQL写一个RegExp,它将仅返回以下3种电话格式: +1 000-000-0000 x0000 +1 000-000-0000 000-000-0000 x0000 000-000-0000 所以基本上: + [任意位数] [空格] [任意
2回复

JavaScript中的正则表达式匹配电话号码

在Java脚本中需要一个与以下内容匹配的正则表达式 08 8223 7666 0800 118715 (07)862 8715 +64 9 520 6369 任何帮助将不胜感激 但这不匹配右括号
1回复

正则表达式匹配电话号码

我正在尝试提出一个使以下内容(电话号码)无效的正则表达式 少于10个数字 以+61开头但小于11的数字(不包括'+'号) 数字以+61开头,但超过11个数字(不包括“ +”号) 以0061开头但小于13的数字 数字以0061开头,但超过13个数字
1回复

正则表达式匹配电话号码

我正在尝试创建一个正则表达式,它将匹配任何看起来像电话号码的东西。 如果一个字符串中有多个数字,则将它们都匹配。 电话号码定义为: 10个以上的字符 不以N结尾,但可以以其他字母/单词结尾 所以我想匹配这些: 07158245215 0124435
5回复

正则表达式中匹配电话号码

[1-9]有什么作用? 就像特定范围的整数吗? 我尝试了194-333-1111,但未通过验证。 这是一个琐碎的问题,但花了我一个小时,仍然不知道。 任何帮助表示赞赏!!! 谢谢 编辑
3回复

匹配电话号码,正则表达式

我用这种格式的电话号码: 这是搜索电话号码的更加pythonic方式 还是有一个更简单的表达来做到这一点?
5回复

正则表达式匹配电话号码?

我想匹配一个可以包含字母和可选连字符的电话号码: 这是有效的: 333-WELL 这也是有效的: 4URGENT 换句话说,最多只能有一个连字符,但如果没有连字符,则最多可以有7个0-9或AZ字符。 我不知道如何做和正则表达式中的“if statement”。
3回复

用于匹配电话号码的正则表达式

我需要一个正则表达式来匹配电话号码。 我只是想知道这个号码是否可能是一个电话号码,它可以是任何电话格式,美国或国际。 所以我制定了一个策略来确定它是否匹配。 我希望它接受以下字符: 0-9以及,.()-并且可选地以+ (对于国际号码)开头。 如果字符串有任何其他字符,则该字符串不匹配
1回复

JavaScript正则表达式匹配电话号码,但不匹配HTML属性

我们需要使用JavaScript在HTML的某些部分中匹配电话号码,并且该电话号码非常接近,但存在问题。 我们不想匹配显示在诸如max-length="404-555-1212"属性中的电话号码。 考虑以下文本: 使用以下正则表达式,我们可以获取所有电话号码,但不排除属性: