我需要从 Rails 中的大字符串中提取一些电话号码。这些号码将采用多种格式,并且可以在一个字符串中包含多个电话号码。
这是出现的格式类型的示例:
- 022 1234567
- 021 123 2345
- 0271233211
- 021-233-9123
- 09 123 32112
- 021 2331231 或 021 321123123
提取出现在文本正文中的此类电话号码的最有效方法是什么?
更新: 感谢您的回答。在测试了其中一些之后,我意识到我应该包含更多示例。这里还有一些没有出现在上面的列表中:
- 622 32281
- 5754321
- 092213212
- (09)1234321
最佳答案
我会保持简单:
\d{2}[\s\d-]+
两个数字,一个或多个空格、数字或连字符。
需要更多字符:
\d{2}[\s\d-]{5,}
(两个数字和 5 个或更多的空格,连字符的数量)这将减少误击的次数。
这些将在电话号码后包含一个额外的空格,但结果可能会被删减。
不过,我不会修剪,而是会删除连字符和空格并计算剩余的数字数量以将它们识别为电话号码。
如果电话号码总是以 0 开头:
0\d[\s\d-]{5,}\d
这以数字结尾,所以在前面的示例中去掉末尾的空格。
添加在进一步的示例之后:
\b[\s()\d-]{6,}\d\b
关于ruby-on-rails - 使用正则表达式从字符串中提取电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17767716/