瑞士/奥地利/德国电话号码格式

时间:2021-02-24 08:42:33

标签: regex validation pattern-matching

我需要你的帮助!我需要一个符合以下电话号码格式(德国、奥地利、瑞士)的正则表达式。我不知道如何创建这个正则表达式。

我需要的是电话号码格式如下:

+49 (089) 1234567890

+43 (01) 1234567890

+41 (051) 1234567890

只有提到的国家代码(+49、+43、+41)可以这样填写(包括加号)。否 0049 或 (0049) 或 (+49) 等

随后的空格字符应位于国家代码和区号之间。不允许使用其他字符,如 -、/、+ 等或字母。只有空格字符。

以下区号必须有括号。

随后的空格字符也应位于区号和电话号码之间。不允许使用其他字符,如 -、/、+ 等或字母。只有空格字符。

电话号码应完整填写(只能填写数字,数字之间不能有空格)。

我希望有人能支持我和我的请求,因为我真的不知道如何创建这种表达方式。我试过了,这就是结果:

[0-9]*\/*(\+49)*(\+43)*(\+41)*[ ]*(\([0-9]{3,6}\))*([ ]*[0-9]|\/|\(|\)|\-|)*

我想,这是完全错误的。

最好的问候, 克劳斯

1 个答案:

答案 0 :(得分:0)

这应该适用于德国、奥地利和瑞士。前三个有效,其余无效测试:

const regex = /^\+4[139] \(0\d+\) \d{9,}$/;
[ '+49 (089) 1234567890',
  '+43 (01) 1234567890',
  '+41 (051) 1234567890',
  '+41 (0) 1234567890',
  '+41 (12) 1234567890',
  '+41 (051) 12',
  '+41 (051)',
  '+41 051 1234567890',
  '+41-051-1234567890',
  '+44 (051) 1234567890',
].forEach(str => {
  console.log(str + ' ==> ' + regex.test(str));
});

输出:


+49 (089) 1234567890 ==> true
+43 (01) 1234567890 ==> true
+41 (051) 1234567890 ==> true
+41 (0) 1234567890 ==> false
+41 (12) 1234567890 ==> false
+41 (051) 12 ==> false
+41 (051) ==> false
+41 051 1234567890 ==> false
+41-051-1234567890 ==> false
+44 (051) 1234567890 ==> false

说明:

  • ^ - 字符串开头的锚点(之前禁止任何内容)
  • \+ - 文字“+”
  • 4[139] - 414349
  • - 空格
  • \(0\d+\) - 以 0 开头且至少有两位数字,括在括号中的数字
  • - 空格
  • \d{9,} - 至少 9 位的数字(您可以同时限制两者,例如 \d{9,12} 是 9 到 12 位的数字)
  • $ - 字符串末尾的锚点(不允许后面有任何内容)