我的国际电话号码正则表达式有任何缺陷吗?

问题描述 投票:0回答:1

正则表达式:

^(\(?([\d \-\)\–\+\/\(.]+){8}\)?([ .\-–\/]?)([\d]+))$

目标:

  • 支持北美和国际电话号码
  • 填写我们表格的用户知道我们在加拿大,可以或不可以输入他们的国家/地区代码,但如果需要,我们会询问他们的国家/地区,因此不会强制在电话号码中输入国家/地区代码
  • 用户可能或可能不知道如何从加拿大拨打长途或国际电话,因此无需强制输入“+”或00或011
  • 电话号码不包括分机号 - 我们的表格还有另一个用于办公室分机的简单数字字段
  • 最小长度是{8}设置的9位数字(澳大利亚或其他国家还在使用6位数字吗?)

基于https://regexpattern.com/phone-number/,这是我改编的德语正则表达式:

匹配这些数字:(在 https://regex101.com/r/BwjY50/1https://ihateregex.io/expr/

进行测试)
US (North American) Phone Numbers
1-800-123-4567
(123)456-7890
1234567890
123-456-7890
123.456.7890
123 456 7890
(123) 456 7890
UK Phone Numbers
+447222555555
+44 7222 555 555
(0722) 5555555 #2222(no match)
French Phone Numbers
0123456789
01 23 45 67 89
01.23.45.67.89
0123 45.67.89
0033 123-456-789
+33-1.23.45.67.89
+33 – 123 456 789
+33(0) 123 456 789
+33 (0)123 45 67 89
+33 (0)1 2345-6789
+33(0) – 123456789
German Phone Numbers
(06442) 3933023
(02852) 5996-0
(042) 1818 87 9919
06442 / 3893023
06442 / 38 93 02 3
06442/3839023
042/ 88 17 890 0
+49 221 549144 – 79
+49 221 – 542194 79
+49 (221) – 542944 79
0 52 22 – 9 50 93 10
+49(0)121-79536 – 77
+49(0)2221-39938-113
+49 (0) 1739 906-44
+49 (173) 1799 806-44
0214154914479
02141 54 91 44 79
01517953677
+491517953677
015777953677
02162 – 54 91 44 79
(02162) 54 91 44 79
Chinese Phone Numbers
0936-4211235
89076543
010-12345678-1234
Chinese Mobile Phone Numbers
008618311006933
+8617888829981
1911925564
India Phone Numbers
03595-259506
03592 245902
03598245785
9775876662
0 9754845789
0-9778545896
+91 9456211568
91 9857842356
919578965389
Brazilian Phone Numbers
(12) 123 1234
(01512) 123 1234
(0xx12) 1234 1234
Australian Phone Numbers
0732105432
1300333444
6 digits really? minimum requirred in this regex is currently set with {8}
131313(no match)
Dutch Phone Numbers
+31235256677
+31(0)235256677
023-5256677
Sweden Phone Numbers
+46 8 123 456 78
08-123 456 78
0123-456 78

有效!寻找缺陷或有效的不受支持的数字。

regex phone-number
1个回答
0
投票

您的解决方案对于简单情况来说足够好,但在许多边缘情况下却失败了。例如,有大量无效的电话号码通过检查,例如:

(022 23321
()23435 23
3352 +2 32324   2

您甚至可以解释其中的一些问题,例如括号平衡,但是想出一个正则表达式来解释所有可能的情况,我认为很困难,而且肯定会使其难以维护。

您可以考虑强迫用户至少“提示”您他们打算插入号码的国家/地区或格式,并使用此信息来匹配更简单、更“专业”的正则表达式。

© www.soinside.com 2019 - 2024. All rights reserved.