admin管理员组文章数量:1314308
I need a regular expression that works in PHP and JavaScript to validate New Zealand local, mobile and freecall (0800) phone numbers.
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
Below is a regular expression I found on the web but it does not seem to work for some reason:
(^([0]\d{1}))(\d{7}$)|(^([0][2]\d{1}))(\d{6,8}$)|([0][8][0][0])([\s])(\d{5,8}$)
Can someone please help with the expression above? Thank you for your help in advance.
UPDATE - I worked it out and the solution is below:
$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})$/';
I need a regular expression that works in PHP and JavaScript to validate New Zealand local, mobile and freecall (0800) phone numbers.
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
Below is a regular expression I found on the web but it does not seem to work for some reason:
(^([0]\d{1}))(\d{7}$)|(^([0][2]\d{1}))(\d{6,8}$)|([0][8][0][0])([\s])(\d{5,8}$)
Can someone please help with the expression above? Thank you for your help in advance.
UPDATE - I worked it out and the solution is below:
$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})$/';
Share
Improve this question
edited Mar 29, 2012 at 13:21
Chris
asked Mar 24, 2012 at 9:03
ChrisChris
8145 gold badges11 silver badges23 bronze badges
3 Answers
Reset to default 2Why all those parentheses and brackets?
^(\(0\d\)\d{7}|\(02\d\)\d{6,8}|0800\s\d{5,8})$
You dont have to wrap everything in pair of parentheses to make it work. That's voodoo programming. For example, ([0][8][0][0])
is simply 0800
.
There's not enough information about the formatting of NZ phone numbers in your question to be sure about this, but a trick may be to first remove all non digit characters and after that test for the number of digits (as far as I can see it should be 9 digits?). Something like:
var phonenr = '(09)1234567'.replace(/[\(\)\s\-]/g,'')
,valid = phonenr.length === 9;
// or check if it's all digits, starting with 0 as well as the length
valid = /^0\d+$/.test(phonenr) && phonenr.length === 9
The answer is outdated, 020 is a valid mobile phone prefix now.
本文标签: phpRegular expression to validate New Zealand phone numbersStack Overflow
版权声明:本文标题:php - Regular expression to validate New Zealand phone numbers - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741928970a2405461.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论