2010-10-18 19 views
6

Đối với số điện thoại bắc Mỹ, (999) 999-9999 hoạt động khá tốt đối với mặt nạ nhập.Có thể tạo mặt nạ để xử lý các số điện thoại không phải của Bắc Mỹ không?

Tuy nhiên, tôi không thể tìm thấy một ví dụ điển hình sẽ xử lý các số không phải người Mỹ bắc. Tôi biết rằng số lượng chữ số có thể thay đổi, vì vậy khác với việc hạn chế chữ số thành chữ số, có một ví dụ hay ở đâu không?

Trả lời

4

Không có mặt nạ chung, thực sự: Có quá nhiều kết hợp.

Điều duy nhất được sửa là international country code, thường được bắt đầu bằng +.

Theo Điều Wikipedia trên telephone numbering plans, hầu hết các quốc gia đều tuân thủ gói số E.164.

Nếu tôi đọc E.164 một cách chính xác, bạn có thể yên tâm làm cho các giả định sau: Mã

  • Quốc gia: 1-3 chữ số

  • Mạng/mã vùng và số: Tối đa 19 chữ số

Tôi sẽ yêu cầu mã quốc gia và có trường "mã vùng + số" làm đầu vào gồm 19 chữ số.

0

Bạn không đề cập đến ứng dụng của mình nhưng điều này chắc chắn có thể sử dụng regular expressions. Bạn có thể muốn take a look here.

+1

Và bây giờ, tôi có hai vấn đề :) – chris

0

Không dễ dàng. Hãy xem this page để biết ví dụ tại sao: nếu bạn chỉ xem xét số điện thoại của Đức, bạn sẽ lưu ý rằng có các định dạng khác nhau tùy thuộc vào nơi bạn đang gọi đến số đó. Bạn chọn cái nào? Và đó chỉ là số điện thoại của Đức; chúng khác nhau từ lục địa đến lục địa, và từ nước này sang nước khác.

Đi với "chỉ số" có thể là đặt cược an toàn nhất của bạn.

0

Tôi sẽ cho phép dấu cách, dấu gạch ngang, dấu gạch chéo và tất cả những thứ đó, nhưng thực sự chỉ quan tâm đến các số và dấu + hàng đầu tùy chọn. Mọi thứ khác, chẳng hạn như giả định các khối nhất định của một độ dài nhất định chỉ là yêu cầu sự cố.

2

Bạn có thể suy ra các mã quốc gia với một RegEx đơn giản như:

^(?:(?:0(?:0|11)\s?)|+)([17]|2([07]|[1-689]\d)|3([0-469]|[578]\d)|4([013-9]|2\d)|5([1-8]|[09]\d)|6([0-6]|[789]\d)|8([12469]|[03578]\d)|9([0-58]|[679]\d)) 

Tiếp theo là

(([\s\(\).-]{0,2}\d){4,13})$ 

để trích xuất số quốc gia.

Để xác thực độ dài và hiệu lực của số quốc gia, bạn cần libphonenumber hoặc tương tự.

RegEx dài ở trên cho phép +, 00 hoặc 011 trước mã quốc gia và lựa chọn dấu câu trong số cũng sẽ bị tước.

-1

Có thể sẽ rất tệ nếu bạn trả lời câu hỏi cũ. Nhưng libphonenumber có vẻ như là một giải pháp tốt cho câu hỏi của bạn.

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