Trong hướng dẫn này, nó chỉ ra cách tìm và xác thực số điện thoại trong 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 phổ biến nhất
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, số nhận dạng là Biểu thức chính quy hoặc Regex
Tiếp theo, chúng ta sẽ xem các ví dụ để tìm, trích xuất hoặc xác thực số điện thoại từ một chuỗi hoặc văn bản nhất định. Bài viết bắt đầu với những ví dụ đơn giản và kết thúc với những ví dụ 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ụ
- 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 kết quả khớp cho mẫu.
Giải pháp đã đề cập rất cơ bản và không hoạt động đối với các số như.
0 - nó sẽ chỉ tìm thấyre.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
1re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
2re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
3re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
Để giải quyết những trường hợp đó, Regex nên được cải thiện
Bước 2. Regex cho số điện thoại có dấu cộng
Số điện thoại thường được hiển thị với dấu cộng như
- +000-000-000
Định dạng này phù hợ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
- 000-000-000
- +000-000-000
nhưng cũng
re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
4 sẽ được trích xuất là 000-000-000. Trong bước tiếp theo chúng ta sẽ giải quyết vấn đề nàyBước 3. Xác thực số điện thoại để khớp chính xác
Nếu định dạng quan trọng và chỉ cần kết hợp chính xác như.
______11,
re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
6 nhưng không - re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
4 , re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
8 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]
9. re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
3Tiếp theo, hãy xem một ví dụ chung hơn 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ế
Khó tìm và test số quốc tế chính xác 100%. Có thể cần phân tích dữ liệu để kiểm tra định dạng nào có trong văn bản
Một giải pháp khả thi để xác nhận số quốc tế là
re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
4Một biểu thức chính quy khác là
re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
5Bước 4. Xác thực số điện thoại của Hoa Kỳ, Vương quốc Anh, Pháp
Ví dụ: hãy bắt đầu với số điện thoại của Hoa Kỳ
- [000]000-0000
- 000-000-0000
- [000] 000-0000
có thể được thực hiện với Regex tiếp theo
re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
6số UK hoặc GB như
- +447222000000
- +44 7222 000 000
có thể được tìm kiếm và xác nhận bởi
re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
7giải pháp khả thi khác cho Vương quốc Anh là.
re.findall[r"\+?[\d]{3}-[\d]{3}-[\d]{3}", text]
0Regex đơn giản tiếp theo sẽ hoạt động với các số tiếng Pháp
re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
9giống
- 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 tạo một Regex có nhiều định dạng khác nhau, bạn có thể thử với định dạng tiếp theo
re.findall[r"[\d]{3} [\d]{3} [\d]{3}", text]
0Cái ở 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 với 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 một số điện thoại
- thông tin múi giờ
sau đó chúng tôi sẽ đề xuất 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 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ể gặp phải các vấn đề về hiệu suất đối với những thứ 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 với cờ để làm cho nó hoạt động bình thường
Xin chào. Đây là thử thách duy nhất tôi cần làm, để hoàn thành khóa học python. Số hợp lệ bắt đầu bằng 1or8or9 và có độ dài là 8. Mã của tôi đã vượt qua 4 bài kiểm tra đầu tiên, nhưng không đạt ở bài kiểm tra thứ 5. Tôi không thể thấy số điện thoại trong bài kiểm tra thứ 5. Những gì có thể là vấn đề? . nhập lại số = input[] nếu lại. tìm kiếm["[[189]][\d]+", số] và len[số] == 8. in ["Hợp lệ"] khác. in["Không hợp lệ"]