0

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

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

所以我想匹配这些:

  • 07158245215
  • 01244356356
  • 07158245215Y
  • 01244356356Y
  • 07158245215P
  • 01244356356P
  • 07158245215X
  • 01244356356X
  • 07158245215 工作
  • 01244 356356 工作
  • 工作 07158 245215 / 家庭 07158 245215 // 可能会很困难
  • 工作01244356356

并禁止这些:

  • 071582 45215N
  • 01244356356N
  • 01244356356 否

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

4

1 回答 1

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

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

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

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

在 RegExr 上查看

于 2012-11-15T11:25:52.587 回答