regex 修改德国移动的号码的给定正则表达式

6ju8rftf  于 2023-03-09  发布在  其他
关注(0)|答案(1)|浏览(90)

我有一个正则表达式(regex)匹配德国手机号码。
表达式如下所示:
[^\d]((\+49|0049|0)\s?(1|9)[1567]\d{1,2}([ \-/]*\d){7,8})(?!\d)
它涵盖的数字格式如下所示,以及更多:

+4915368831169
+49 15207955279
+49 1739341284

正如您在regex demo中所看到的,正则表达式涵盖了所有可能的格式,但不幸的是,与0 910 0 910 -77 -10 910 0 910 -75 0都匹配,这两个格式不是德国移动号码。
如何修改正则表达式,使正则表达式仍然匹配演示中提供的德国移动电话号码,但不匹配给定的数字序列?

ilmyapht

ilmyapht1#

您可以匹配一个数字6-7次,后跟可选的空格/-,然后匹配负前瞻之前末尾的数字。
对于捕获组:

[^\d]((\+49|0049|0)\s?([19])[1567]\d{1,2}(?:\d[ /-]*){6,7}\d)(?!\d)

Regex demo
不使用捕获组:

(?<!\d)(?:\+49|0049|0)\s?[19][1567]\d{1,2}(?:\d[ /-]*){6,7}\d(?!\d)

Regex demo

相关问题