正则表达式匹配电话号码

时间:2012-11-15 11:19:42

标签: regex

我正在尝试创建一个匹配任何看起来像电话号码的正则表达式。如果字符串中有多个数字,则匹配它们。电话号码定义为:

  • 10+个字符
  • 不以N结尾,但可以其他字母/单词结尾

所以我想匹配这些:

  • 07158245215
  • 01244356356
  • 07158245215Y
  • 01244356356Y
  • 07158245215P
  • 01244356356P
  • 07158245215X
  • 01244356356X
  • 07158245215工作
  • 01244 356356 work
  • work 07158 245215 / home 07158 245215 //可能是一个困难的
  • 工作01244356356

不允许这些:

  • 071582 45215N
  • 01244356356N
  • 01244356356 N

我玩弄了负面的前瞻/后视,但我无法理解任何可理解的东西。甚至是可能的还是我应该用.NET这样的高级语言来做?

1 个答案:

答案 0 :(得分:1)

(?:\d\s*){10,}(?![\d\s]*N)

将匹配较长字符串中的10位以上的电话号码,只要该号码后面没有N。它允许每个数字之间的任意数量的空格。

如果您的所有电话号码始终都以0开头,则可以在示例中明确地将其编码到正则表达式中:

\b0\s*(?:\d\s*){9,}(?![\d\s]*N)

See it on RegExr