2012-03-24 3 views
5

Мне нужно регулярное выражение, которое работает в PHP и JavaScript для проверки новостных локальных, мобильных и freecall (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, 080

Ниже регулярное выражение, которое я нашел в Интернете, но это, кажется, не работает по какой-то причине:

(^ ([0] \ d {1})) (\ д {7 } $) | (^ ([0] [2] \ д {1})) (\ d {6,8} $) | ([0] [8] [0] [0]) ([\ с]) (\ d {5,8} $)

Может кто-нибудь помочь с выражением выше? Благодарим вас за помощь.

UPDATE - Я работал его, и раствор ниже:

$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})$/'; 

ответ

2

Почему все эти скобки и скобки?

^(\(0\d\)\d{7}|\(02\d\)\d{6,8}|0800\s\d{5,8})$ 

Вам не нужно обертывать все в круглые скобки, чтобы заставить его работать. Это программирование вуду. Например, ([0][8][0][0]) - это просто 0800.

+0

Это выглядит хорошо, и я попробовал его на PHP, но по какой-то причине он не работал. Кто-нибудь может помочь? – Chris

+0

@ Крис: Все, что я могу сказать, это то, что само выражение работает (http://rubular.com/r/ynr28Fcwui). Вы должны заглянуть в документы PHP. – Tomalak

1

Информация о форматировании номеров телефонов NZ в вашем вопросе невелика, но можно с уверенностью сказать, что сначала нужно удалить все незнаковые символы и после этого проверить количество цифр (насколько я знаю может видеть, что это должно быть 9 цифр?). Что-то вроде:

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 
+0

Форматирование NZ телефонных номеров является: Мобильный мин: ххх ххх ххх макс: ххх хххх хххх телефон: хх ххх хххх ИЛИ 0800 ххх ххх ххх 0508 ххх – Chris

Смежные вопросы