匹配所有德国和奥地利手机 phone 号码的正则表达式

Regex that matches all German and Austrian mobile phone numbers

我需要一个 Python 正则表达式来匹配来自德国和奥地利的手机 phone 号码。

为了做到这一点,我们首先要了解 phone 数字的结构:

德语前缀列表:

奥地利语前缀列表:

现在我们知道构建正则表达式的所有规则,我们必须考虑,人类有时会以非常奇怪的方式写数字,其中包含多个空格,/()。例如:

我正在寻找可以匹配所有澳大利亚和德国手机号码的 Python 正则表达式

我目前的情况是这样的:

^(?:\+4[39]|004[39]|0|\+\(49\)|\(\+49\))\s?(?=(?:[^\d\n]*\d){10,11}(?!\d))(\()?[19][1567]\d{1,2}(?(1)\))\s?\d(?:[ /-]?\d)+

你可以使用

(?x)^          # Free spacing mode on and start of string
 (?:           # A container group:
   (\+49|0049|\+\(49\)|\(\+49\))? [ ()\/-]*  # German: country code
   (?(1)|0)1(?:5[12579]|6[023489]|7[0-9])    #         trunk prefix and company code
 |                                           # or
   (\+43|0043|\+\(43\)|\(\+43\))? [ ()\/-]*  # Austrian:  country code
   (?(2)|0)6(?:64|(?:50|6[0457]|7[0678]|8[0168]|9[09])) # trunk prefix and company code
 )
 [ ()\/-]*   # zero or more spaces, parens, / and -
 \d(?:[ \/-]*\d){6,7} # a digit and then six or seven occurrences of space, / or - and a digit
 \s* # zero or more whites
$ # end of string

参见regex demo

模式的单行版本是

^(?:(\+49|0049|\+\(49\)|\(\+49\))?[ ()\/-]*(?(1)|0)1(?:5[12579]|6[023489]|7[0-9])|(\+43|0043|\+\(43\)|\(\+43\))?[ ()\/-]*(?(2)|0)6(?:64|(?:50|6[0457]|7[0678]|8[0168]|9[09])))[ ()\/-]*\d(?:[ \/-]*\d){6,7}\s*$

参见 this demo

如何创建公司代码正则表达式

  1. 转到
  2. 单击运行最后一个代码片段
  3. 答案底部的运行代码片段按钮
  4. 如果您愿意,可以调整输入框的大小
  5. 获取支持的号码列表,以逗号或换行符分隔并将其粘贴到字段中
  6. 单击生成按钮,然后抓取将出现在下面的图案。