匹配电话号码无论格式化

时间:2013-04-16 15:55:56

标签: javascript regex mongodb

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

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

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

1 个答案:

答案 0 :(得分:2)

我会首先在DB中存储规范化的电话号码(例如,剥离非数字字符或以标准格式格式化),因为它们尚未规范化,因为每次搜索请求都会动态执行将是昂贵的,所以如果你没有太多的条目(例如,如果这仍然都在开发中),一个脚本将一次性标准化所有条目(或如果你有一个生产,在非工作时间分几批系统)将是可能的。

然后你的where子句将规范化输入,然后搜索会更容易。

顺便提一下地址,你必须规范化数据以执行良好的搜索,否则你将不得不开发一些模糊匹配算法,这只会慢一点。 (并且可能比你想象的要花费更多时间)