2012-03-24 56 views
5

Tôi cần một cụm từ thông dụng hoạt động trong PHP và JavaScript để xác thực số điện thoại địa phương, di động và freecall (0800) của New Zealand.Biểu thức chính quy để xác thực số điện thoại New Zealand

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

Dưới đây là một biểu hiện thường xuyên Tôi tìm thấy trên web, nhưng nó dường như không làm việc vì một lý do:

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

Ai đó có thể vui lòng trợ giúp với biểu thức ở trên không? Trước tiên xin cảm ơn sự giúp đỡ của bạn.

CẬP NHẬT - Tôi làm việc nó ra và giải pháp là dưới đây:

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

Trả lời

2

Tại sao tất cả những dấu ngoặc đơn và dấu ngoặc?

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

Bạn không phải quấn mọi thứ vào cặp dấu ngoặc đơn để làm cho nó hoạt động. Đó là lập trình voodoo. Ví dụ: ([0][8][0][0]) chỉ đơn giản là 0800.

+0

Điều này có vẻ tốt và tôi đã thử nó bằng PHP nhưng nó không hoạt động vì một lý do nào đó. Bất cứ ai cũng có thể giúp đỡ? – Chris

+0

@Chris: Tất cả những gì tôi có thể nói là biểu thức hoạt động (http://rubular.com/r/ynr28Fcwui). Bạn nên xem xét các tài liệu PHP. – Tomalak

1

Không có đủ thông tin về định dạng số điện thoại NZ trong câu hỏi của bạn để chắc chắn về điều này, nhưng một mẹo có thể là trước tiên xóa tất cả ký tự không phải chữ số và sau đó kiểm tra số chữ số (theo như tôi có thể thấy nó phải là 9 chữ số?). Một cái gì đó như:

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

Formatting các số điện thoại NZ là: Điện thoại di động phút: xxx xxx xxx max: xxx xxxx xxxx điện thoại bàn: xx xxx xxxx HOẶC 0800 xxx xxx xxx xxx 0508 – Chris

Các vấn đề liên quan