我需要一个在PHP和JavaScript工作的正则表达式来验证新西兰本地,移动和免费电话(0800)的电话号码。
Matches: (09)1234567, (021)123456, (021)1234567, (027)123456, 0800 12345, 0800 1234578
Non-Matches: (09)123456 , (021)12345 , (031)1234567, (027)12345 , 0800-1234, 0800123456789
下面是我在网上找到的一个正则表达式,但由于某种原因,它似乎不起作用:
(^([0]\d))(\d $)|(^([0][2]\d{1}))(\d{6,8}$)|([0][8][0][0])([\s])(\d{5,8}$)
有人能帮我解释一下上面的表达吗?提前感谢你的帮助。
更新-我解决了这个问题,解决方案如下:
$phone_number = preg_replace('/[^\d\(\)]/', '', $phone_number);
$pattern = '/^(\((03|04|06|07|09)\)\d{7})|(\((021|022|025|027|028|029)\)\d{6,8})|((0508|0800|0900)\d{5,8})$/';
3条答案
按热度按时间kqlmhetl1#
为什么要用那些圆括号?
你不需要把所有的东西都用括号括起来,这就是伏都教编程,例如,
([0][8][0][0])
就是0800
。nwsw7zdq2#
在你的问题中没有足够的关于新西兰电话号码格式的信息来确定这一点,但一个技巧可能是首先删除所有非数字字符,然后测试数字的数量(据我所见,它应该是9位数?)。
6ju8rftf3#
答案已经过时了,020现在是一个有效的手机前缀。