2010-06-26 52 views
5

Có cách nào dễ dàng để kiểm tra xem số điện thoại được người dùng nhập có bao gồm mã quốc gia và để xác thực rằng số đó là chính xác không? Tôi không sử dụng bất kỳ định dạng cụ thể nào, bản thân số đó phải là chữ số duy nhất, không có ('s,-và tương tự. Có thể xác thực như vậy mà không yêu cầu người dùng cho một quốc gia không? Tôi nghĩ rằng nó không thể được thực hiện với regex (googled một chút và tìm thấy rất nhiều thứ nhưng không phải cho vấn đề này) .Có thư viện nào cho nó không? Tôi đang sử dụng pythonCách kiểm tra xem số điện thoại được người dùng nhập có bao gồm mã quốc gia không?

Hoặc có thể sẽ có ý nghĩa hơn khi thực thi một định dạng, ví dụ X-YYYYYYYY ... trong đó X sẽ là mã quốc gia, hoặc một cái gì đó như thế này?

+1

Chào mừng bạn đến với Stack Overflow! Số điện thoại là một cơn ác mộng. –

Trả lời

1

Tôi đã nghiên cứu chủ đề này trong một thời gian. với số lượng, không ai biết là họ có mã contry hay không. : không thể tìm ra nó. Chúng tôi đã có một số con số là số hợp lệ của Hoa Kỳ không có mã quốc gia (1) và số hợp lệ của một số tương phản khác với mã vùng. Nhưng đối với 99% trường hợp bạn có thể kiểm tra nếu chiều dài của số là 9 thì không có mã contry. Bạn nên thi hành người dùng để nhập mã contry.

4

Đây là Google's library for dealing with phone numbers (bằng Java). Tuy nhiên, như Google là một cửa hàng Python là tốt, tôi tưởng tượng họ có thể có một phiên bản Python có sẵn ở đâu đó hoặc bạn có thể trích xuất những gì bạn cần và dịch nó.

+0

nó không hoạt động. Tôi đã nhập số điện thoại di động của mình mà không có cộng và đặt Hoa Kỳ làm mặc định. Nó không thể phân tích nó được. Vì vậy, nó là vô ích. Trong câu trả lời của tôi, tôi đã đưa ra một trường hợp khi KHÔNG có giả định nào đó có thể được thực hiện. – Andrey

+0

Nếu không biết số điện thoại của bạn, tôi không thể nói về hiệu quả của nó trong tình huống của bạn, nhưng khi tôi nhập vào tôi hoặc bất kỳ số nào có 10 chữ số mà không có dấu cộng và đặt Hoa Kỳ, nó phân tích chính xác. Tôi không chắc sự khác biệt sẽ là gì. – Andy

+0

Thư viện rực rỡ! Cám ơn vì đã chia sẻ. Đây là vị trí mới của repo: https://github.com/googlei18n/libphonenumber – coder9

2

Một số như 247 8000 có thể là:

  • số địa phương 247 8000 trong một khu vực không xác định trong một đất nước không xác định, có thể +1 212 247 8000
  • số địa phương 8000 trong mã 247 khu vực trong một đất nước không xác định, có lẽ +269 247 8000
  • số địa phương 8000 trong mã 247 nước, như +247 8000

Nếu không có bối cảnh hơn nữa nó là không thể để kể.

Biểu tượng + là yếu tố quan trọng trong việc xác định phần mã quốc gia.

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