我需要一个可在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 {1}))(\d {7} $)|(^([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})$/';
最佳答案
为什么所有这些括号和括号?
^(\(0\d\)\d{7}|\(02\d\)\d{6,8}|0800\s\d{5,8})$
您不必将所有内容都放在圆括号中即可使用。那就是伏都教编程。例如,
([0][8][0][0])
就是0800
。