首页 > 解决方案 > 正则表达式:检测由破折号 (-) 和/或空格分隔的电话号码

问题描述

我正在尝试识别这些类型的电话号码输入:

  1. 0172665476
  2. +6265476393
  3. +62-65476393
  4. +62-654-76393
  5. +62 65476393

虽然我的 regex:(?:\d+\s*)+可以识别前 2 个样本值,但它将最后 3 个样本值识别为每行中的多个匹配项,而不是将数字识别为一个整体。

如何修改它以支持多个破折号和/或空格,并且仍然将其识别为 1 个整数而不是多个匹配项?

标签: regex

解决方案


你可以使用这个正则表达式:

^\+?\d+(?:[\s-]\d+)*\b

正则表达式详细信息:

  • ^\+?+:在开始时匹配可选
  • \d+: 匹配 1+ 位
  • (?:[\s-]\d+)*: 匹配 0 个或多个以空格开头或-后跟 1 个以上数字的组
  • $: End (由单词边界替换,好像有尾随空格,该匹配将丢失。)

推荐阅读