我在新西兰有这个正则表达式的电话号码:
^\+?[\d\s\(\)]{1,14}$|^((\+?64\s*[\(]?2\d{1}[\)]?|\(?02\d{1}\)?)\s*\d{3}\s*\d{3,5})$
我想允许一个空字符串,所以我做了互联网所要做的事情(在前面添加^$|
):
正如您所看到的那样,大多数传递的数字都会失败。当我在前面添加括号时,它会做同样的事情。
如何使用此问题顶部的表达式允许空字符串和电话号码?
请复制粘贴到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
答案 0 :(得分:1)
使用分组:
(?:^$)|(?:^\+?[\d\s\(\)]{1,14}$|^((\+?64\s*[\(]?2\d{1}[\)]?|\(?02\d{1}\)?)\s*\d{3}\s*\d{3,5})$)