正则表达式 - 电话号码或空白空间不起作用

时间:2017-02-08 18:33:57

标签: regex

我在新西兰有这个正则表达式的电话号码:

^\+?[\d\s\(\)]{1,14}$|^((\+?64\s*[\(]?2\d{1}[\)]?|\(?02\d{1}\)?)\s*\d{3}\s*\d{3,5})$

enter image description here

我想允许一个空字符串,所以我做了互联网所要做的事情(在前面添加^$|):

enter image description here

正如您所看到的那样,大多数传递的数字都会失败。当我在前面添加括号时,它会做同样的事情。

如何使用此问题顶部的表达式允许空字符串和电话号码?

请复制粘贴到regexr.com以试验可能的解决方案:

表达式:

^\+?[\d\s\(\)]{1,14}$|^((\+?64\s*[\(]?2\d{1}[\)]?|\(?02\d{1}\)?)\s*\d{3}\s*\d{3,5})$

文本:

Positive:
021 755 2375

+79261234567
9261234567
+1234567
89261234567
4035555678
23423
3454
021 2343234
926 3 4
1 416 555 9292
926 1234567
495 1234567
+7 555 1234567
+7(926)1234567
(926) 1234567
469 123 45 67
0800 345345786
09 419 7555
0800 475 4669
202 555 4567

Negative:

027 .343 -454
8 800 600-APPLE
+42 555.123.4567
926.123.4567
64 25 .435 -34323
025 .435                        -343
123-4567
123-89-01
+1-(800)-123-4567
8 (926) 1234567
415-555-1234
650-555-2345
(416)555-3456
09-419 7555
364563456345645643565346768

1 个答案:

答案 0 :(得分:1)

使用分组:

(?:^$)|(?:^\+?[\d\s\(\)]{1,14}$|^((\+?64\s*[\(]?2\d{1}[\)]?|\(?02\d{1}\)?)\s*\d{3}\s*\d{3,5})$)

Demo