Trong hướng dẫn này, nó đã chỉ ra cách tìm và xác nhận số điện thoại bằng Python bằng các ví dụ đơn giản. Chúng tôi sẽ xem xét các định dạng số điện thoại khác nhau là phổ biến nhất.it's shown how to find and validate phone numbers in Python using simple examples. We will review different phone number formats which are the most popular.
Tùy chọn tốt nhất để tìm kiếm và xác thực dữ liệu như số điện thoại, mã zip, định danh là biểu thức chính quy hoặc regex.
Tiếp theo, chúng ta sẽ thấy các ví dụ cần tìm, trích xuất hoặc xác thực số điện thoại từ một văn bản hoặc chuỗi nhất định. Bài viết bắt đầu với các ví dụ dễ dàng và kết thúc với những cái nâng cao.
Bước 1: Tìm số điện thoại đơn giản
Giả sử rằng chúng ta cần xác thực các định dạng số điện thoại đơn giản không thay đổi. Ví dụ:simple phone number formats which don't change. For example:
- 000-000-000
re.findall[r"[\d]{3}-[\d]{3}-[\d]{3}", text]
- 000 000 0000
re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
Mục tiêu là tìm tất cả các trận đấu cho mẫu. Giải pháp được đề cập rất cơ bản và nó không hoạt động cho các số như:
The mentioned solution is very basic and it's not working for numbers like:
3 - nó sẽ chỉ tìm thấyre.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
4re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
5re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
6re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
Để đối phó với những trường hợp đó, Regex nên được cải thiện.
Bước 2: Regex cho các số điện thoại có điểm cộng
Thường thì số điện thoại được hiển thị với dấu cộng như:phones numbers are displayed with plus sign like:
- +000-000-000
Định dạng này được khớp với biểu thức chính quy tiếp theo:
re.findall[r"\+?[\d]{3}-[\d]{3}-[\d]{3}", text]
Lưu ý rằng điều này sẽ bắt được:
- 000-000-000
- +000-000-000
nhưng cũng:
re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
7 sẽ được trích xuất là 000-000-000. Trong bước tiếp theo, chúng tôi sẽ giải quyết vấn đề này.Bước 3: Xác thực số điện thoại cho khớp chính xác
Nếu định dạng là quan trọng và chỉ cần các trận đấu chính xác như:
re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
4, re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
9 nhưng không - re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
7, re.findall[r"\+?[\d]{3}-[\d]{3}-[\d]{3}", text]
1 thì chúng ta cần thêm ranh giới từ vào regex của mình bằng cách thêm vào đầu và cuối re.findall[r"\+?[\d]{3}-[\d]{3}-[\d]{3}", text]
2:re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
4, re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
9 but not - re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
7 , re.findall[r"\+?[\d]{3}-[\d]{3}-[\d]{3}", text]
1 then we need to add word boundaries to our Regex by adding at the start and the end re.findall[r"\+?[\d]{3}-[\d]{3}-[\d]{3}", text]
2:re.findall[r"\+?\b[\d]{3}-[\d]{3}-[\d]{3}\b", text]
Tiếp theo, chúng ta hãy xem một ví dụ chung chung bao gồm các số điện thoại quốc tế và quốc gia.
Bước 4: Xác thực số điện thoại quốc tế
Thật khó để tìm và kiểm tra số quốc tế với độ chính xác 100%. Phân tích dữ liệu có thể cần thiết để kiểm tra các định dạng nào có trong văn bản.find and test international numbers with 100% accuracy. Analysis of the data might be needed in order to check what formats are present in the text.
Một giải pháp khả thi để xác nhận số lượng quốc tế là:
re.match[r"^[\+\[]?\d+[?:[- \]\[]+\d+]+$", phone]
Một biểu thức chính quy khác là:
re.match[r"^[\+\d]?[?:[\d-.\s[]]*]$", phone]
Bước 4: Xác thực chúng tôi, Vương quốc Anh, số điện thoại của Pháp
Ví dụ: hãy bắt đầu với số điện thoại của chúng tôi:US phone numbers:
- [000]000-0000
- 000-000-0000
- [000] 000-0000
có thể được thực hiện với Regex tiếp theo:
re.match[r"^[\[[0-9]{3}\] ?|[0-9]{3}-][0-9]{3}-[0-9]{4}$", phone]
Các số của Vương quốc Anh hoặc GB như: like:
- +447222000000
- +44 7222 000 000
có thể được tìm kiếm và xác thực bởi:searched and validated by:
^[?:0|\+?44]\s?[?:\d\s?]{9,11}$
Giải pháp khả thi khác cho Vương quốc Anh là:
re.findall[r"\+?[\d]{3}-[\d]{3}-[\d]{3}", text]
3Regex đơn giản tiếp theo sẽ hoạt động cho các số tiếng Pháp:
^[?:[?:\+|00]33|0]\s*[\d][?:[\s.-]*\d{2}]{4}$
like:
- 00 00 00 00 00
- +33 0 00 00 00 00
Bước 5: Tìm số điện thoại ở các định dạng khác nhau
Nếu bạn muốn xây dựng một regex mà tìm các định dạng khác nhau, bạn có thể thử với mô hình tiếp theo:
[\+\d]?[\d{2,3}[-\.\s]??\d{2,3}[-\.\s]??\d{4}|\[\d{3}\]\s*\d{3}[-\.\s]??\d{4}|\d{3}[-\.\s]??\d{4}]
Một trên sẽ bao gồm hầu hết các số điện thoại nhưng sẽ không hoạt động cho tất cả.
Nếu việc xác thực là quan trọng hoặc các tính năng bổ sung là cần thiết như:
- Cập nhật cho các định dạng/quốc gia/khu vực mới
- Thông tin địa lý liên quan đến số điện thoại
- Thông tin về Timezone
Sau đó, chúng tôi sẽ đề nghị các thư viện trưởng thành được sử dụng. Ví dụ điển hình trong trường hợp này là thư viện Java và JavaScript của Google để phân tích cú pháp, định dạng và xác thực các số điện thoại quốc tế.
Sự kết luận
Hãy nhớ rằng Regex rất mạnh mẽ nhưng bạn có thể phải đối mặt với các vấn đề hiệu suất cho những vấn đề phức tạp. Cố gắng sử dụng Regex đơn giản và dễ hiểu. Đôi khi bạn có thể cần chơi bằng cờ để làm cho nó hoạt động đúng:
re.findall[r"\+?[\d]{3}-[\d]{3}-[\d]{3}", text]
4Một lưu ý quan trọng khác là về việc sử dụng:
- Bắt đầu và kết thúc -
5 vàre.findall[r"\+?[\d]{3}-[\d]{3}-[\d]{3}", text]
6re.findall[r"\+?[\d]{3}-[\d]{3}-[\d]{3}", text]
- Ranh giới từ -
2re.findall[r"\+?[\d]{3}-[\d]{3}-[\d]{3}", text]
Chúng tôi đã đề cập đến hầu hết các trường hợp xác nhận điện thoại bằng cách sử dụng Python và Regex.phone validation by using python and Regex.
Gửi và kiểm tra mã xác minh SMS với Dịch vụ Xác minh Twilio ..
Các biểu thức thông thường bên dưới có thể được sử dụng để xác thực nếu một chuỗi là định dạng số điện thoại hợp lệ và để trích xuất số điện thoại từ một chuỗi. Xin lưu ý rằng xác thực này không thể biết nếu một số điện thoại thực sự tồn tại.
Xác thực số điện thoại quốc tế cơ bản
Kiểm tra nó!
Một regex đơn giản để xác nhận chuỗi theo định dạng số điện thoại quốc tế hợp lệ mà không có trình phân cách và với dấu cộng tùy chọn cộng:
ĐÚNG VẬY
Sai
Nhập một văn bản vào đầu vào ở trên để xem kết quả
Mã ví dụ trong Python
re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
0Thông tin bổ sung về việc xác thực số điện thoại
Biểu thức chính quy này sẽ phù hợp với các số điện thoại được nhập với các dấu phân cách [không gian, dấu chấm, giá đỡ, v.v.]
re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
1Kiểm tra nó!
/^\\+?\D / . \ s]? \ d {1,4} [-. \ s]? \ d {1,9} $/
ĐÚNG VẬY
Sai
Nhập một văn bản vào đầu vào ở trên để xem kết quả
Mã ví dụ trong Python
re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
2Kiểm tra nó!
ĐÚNG VẬY
Sai
Nhập một văn bản vào đầu vào ở trên để xem kết quả
Mã ví dụ trong Python
Thông tin bổ sung về việc xác thực số điện thoại
Mặc dù xác thực số điện thoại bằng Regex có thể cung cấp khả năng kiểm tra định dạng của số điện thoại, nhưng không đảm bảo rằng số tồn tại.
- Cũng có thể có một tùy chọn để lại trường số điện thoại mà không cần xác thực vì một số người dùng có thể có:
- Số điện thoại phức tạp hơn với phần mở rộng