ruby-on-rails - 使用正则表达式从字符串中提取电话号码?

标签 ruby-on-rails ruby regex ruby-on-rails-3

我需要从 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/

相关文章:

javascript - RegExp\A\z 不起作用,但这正是 Rails 4 所需要的

ruby-on-rails - Rails 3.1 - simple_captcha 不生成图像

ruby-on-rails - 使用 capistrano 部署时未找到错误命令 webpack

ruby - 如何修复错误的 URI 不是 URI

ruby-on-rails - 如何使用 sublime 在终端上运行 ruby

要列出的 Python 字符串?

ruby-on-rails - Rails render_to_string

ruby - 在 macOS 10.13 (High Sierra) 上使用 Ruby 2.3 的 Jekyll

javascript代码检查特殊字符并在其之前添加双斜杠?

java - Java 中的正则表达式仅匹配 .css 方法签名中出现的逗号