Hướng dẫn validate ip address python regex - xác thực địa chỉ ip python regex

Xây dựng Regex tùy chỉnh của riêng bạn để kiểm tra hình dạng của chuỗi IP được cung cấp khá đơn giản trong Python. Python cung cấp một thư viện có tên Re để phân tích cú pháp và phù hợp với Regex.

Phương pháp này yêu cầu bạn kiểm tra xem chuỗi có hình dạng phù hợp không và các giá trị trong mỗi phần nằm trong khoảng từ 0 đến 255. Trong hướng dẫn này, chúng tôi sẽ xác nhận địa chỉ IPv4, nhưng trong thực tế, bạn nên viết hai chức năng riêng biệt để kiểm tra Địa chỉ IPv4 so với địa chỉ IPv6 và không nên sử dụng Regex cho địa chỉ IPv6.

Hướng dẫn validate ip address python regex - xác thực địa chỉ ip python regex

Địa chỉ IPv4

Địa chỉ IPv4 trông như thế này

123.456.78.90

Có thể có các biến thể nhỏ, nhưng nói chung, địa chỉ sẽ bao gồm một hoặc nhiều phần của một đến ba chữ số, được phân tách theo các giai đoạn.

Viết biểu thức chính quy

Tạo một chuỗi regex phù hợp với địa chỉ IP hợp lệ cho IPv4. Cách rõ ràng nhất để làm điều này là như sau:



"[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"

Hãy để phá vỡ các phần của biểu thức này. & NBSP;

Điều này chỉ ra rằng chúng tôi đang tìm kiếm bất kỳ một trong những nhân vật bên trong dấu ngoặc. Trong trường hợp này, chúng tôi đang tìm kiếm một ký tự chữ số hoặc số từ 0 đến 9

Các số giữa niềng răng xoăn cho thấy rằng chúng tôi đang tìm kiếm ít nhất là một hoặc ba trường hợp của nhân vật trước đó. Trong trường hợp này, chúng tôi tìm kiếm ít nhất một hoặc ba chữ số.

Trong Regex, người Viking. Nhân vật là một nhân vật đặc biệt có nghĩa là bất kỳ nhân vật nào. Để tìm ra những người thực tế. Nhân vật, chúng ta phải thoát khỏi nó bằng một dấu gạch chéo ngược. Điều này chỉ ra rằng chúng tôi đang tìm kiếm một bản theo nghĩa đen. tính cách.

Ba thành phần đó tạo nên một byte của địa chỉ IP (ví dụ: 192.) Để phù hợp với địa chỉ IP hợp lệ hoàn chỉnh, chúng tôi lặp lại chuỗi này bốn lần (bỏ qua khoảng thời gian cuối cùng.)

Sử dụng biểu thức chính quy

Nhập mô -đun Python Re. Sử dụng phương thức Match () từ mô -đun để kiểm tra xem một chuỗi đã cho có phải là khớp cho regex của chúng tôi không.

Sử dụng Match ()

Phương thức Match () có hai đối số: chuỗi regex và một chuỗi được khớp. & Nbsp; & nbsp;



import re
match = re.match(r"[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}", "127.0.0.1")
print(match)



>>> <re.Match object; span=(0, 9), match='127.0.0.1'>

Nếu chuỗi là một trận đấu, RE sẽ tạo một đối tượng khớp với thông tin về trận đấu. Nếu chúng ta chỉ đơn giản là cố gắng xác định rằng một trận đấu đã được tìm thấy, chúng ta có thể chọn kết quả cho một boolean.



print(bool(match))

 


>>> True

Sử dụng tìm kiếm ()

Phương thức search () cũng có hai đối số: chuỗi regex và một chuỗi được tìm kiếm.



import re
found = re.search(r"[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}", "127.0.0.1")
print(match)



>>> True

Sự khác biệt giữa tìm kiếm và khớp là tìm kiếm sẽ trả về giá trị boolean nếu tìm thấy một trận đấu trong chuỗi.

Kiểm tra các giới hạn số

Không có địa chỉ IP nào có thể chứa một chuỗi ba số lớn hơn 255. Điều gì sẽ xảy ra nếu người dùng nhập một chuỗi bao gồm chuỗi 3 chữ số lớn hơn 255? Ngay bây giờ, trình kết hợp Regex của chúng tôi sẽ trả về đúng mặc dù đó là một địa chỉ IP không hợp lệ.

Chúng tôi cần thực hiện kiểm tra cuối cùng trên chuỗi của chúng tôi để đảm bảo rằng tất cả các nhóm chữ số trong đó là các giá trị số từ 0 đến 255.

Cách dễ nhất để làm điều này là lặp lại chuỗi và kiểm tra từng nhóm số ba chữ số. Nếu chuỗi các chữ số lớn hơn 255 hoặc nhỏ hơn 0, hãy trả về sai.



  bytes = ip_address.split(".")
  
   for ip_byte in bytes:
       if int(ip_byte) < 0 or int(ip_byte) > 255:
           print(f"The IP address {ip_address} is not valid")
           return False

Đặt nó lại với nhau

Ở đây, một ví dụ về chức năng xác thực Regex hoàn chỉnh trong Python bằng cách sử dụng re.Search () và trình lặp tùy chỉnh của chúng tôi.



def validate_ip_regex(ip_address):
  
   if not re.search(r"[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}", "127.0.0.1", ip_address):
       print(f"The IP address {ip_address} is not valid")
       return False

   bytes = ip_address.split(".")
  
   for ip_byte in bytes:
       if int(ip_byte) < 0 or int(ip_byte) > 255:
           print(f"The IP address {ip_address} is not valid")
           return False
   print(f"The IP address {ip_address} is valid")
   return True



Xác thực địa chỉ IP bằng API của bên thứ ba

Một cách khác, mạnh mẽ hơn, cách kiểm tra đầu vào địa chỉ IP hợp lệ hoặc địa chỉ IP không hợp lệ là đưa ra yêu cầu nhanh chóng cho API định vị địa lý IP. Trong ví dụ này, chúng tôi sẽ sử dụng API định vị địa lý IP bản tóm tắt. & NBSP;

API cho phép bạn gửi chuỗi IP để xác thực hoặc, nếu bạn gửi yêu cầu trống, nó sẽ trả về thông tin về địa chỉ IP của thiết bị mà yêu cầu được thực hiện. Điều này rất tiện lợi nếu bạn cũng cần biết địa chỉ IP của thiết bị là gì.

Bắt đầu với API

Có được khóa API

Chuyển đến trang tài liệu API. Bạn có thể thấy một ví dụ về đối tượng phản hồi API API JSON ở bên phải và một nút màu xanh lam bắt đầu ở bên trái.

Hướng dẫn validate ip address python regex - xác thực địa chỉ ip python regex

Nhấp vào Bắt đầu. Nếu bạn không bao giờ sử dụng AbstractApi trước đây, bạn sẽ cần tạo một tài khoản miễn phí với email và mật khẩu của bạn. Nếu bạn đã sử dụng API trước đây, bạn có thể cần phải đăng nhập.

Khi bạn đã đăng ký hoặc đăng nhập, bạn sẽ hạ cánh trên trang chủ API, nơi bạn nên xem các tùy chọn về tài liệu, giá cả và hỗ trợ, cùng với khóa API và tab của bạn để xem mã kiểm tra cho các ngôn ngữ được hỗ trợ.

Hướng dẫn validate ip address python regex - xác thực địa chỉ ip python regex

Yêu cầu API với Python

Khóa API của bạn là tất cả những gì bạn cần để lấy thông tin cho một địa chỉ IP. Hãy để sử dụng mô -đun Python Yêu cầu để gửi yêu cầu đến API.



import requests
def get_geolocation_info():
   try:
       response = requests.get(
      "https://ipgeolocation.abstractapi.com/v1/?api_key=YOUR_API_KEY")
       print(response.content)
   except requests.exceptions.RequestException as api_error:
       print(f"There was an error contacting the Geolocation API: {api_error}")
       raise SystemExit(api_error)

Khi phản hồi JSON quay trở lại, chúng tôi in nó vào bảng điều khiển, nhưng trong một ứng dụng thực sự, bạn sẽ sử dụng thông tin trong ứng dụng của mình. Nếu địa chỉ IP không hợp lệ, API sẽ trả về lỗi. Sử dụng thông tin lỗi làm trình xác nhận của bạn.

Phản hồi JSON mà AbstractApi gửi lại trông giống như thế này:



import re
match = re.match(r"[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}", "127.0.0.1")
print(match)

0

Lưu ý: Xác định thông tin đã được tái cấu trúc.

Sự kết luận

Trong bài viết này, chúng tôi đã xem xét hai phương thức tìm địa chỉ IP hợp lệ hoặc địa chỉ IP không hợp lệ trong Python: sử dụng mô -đun Re regex và sử dụng mô -đun yêu cầu cùng với API định vị địa lý miễn phí Tóm tắt.

Hướng dẫn validate ip address python regex - xác thực địa chỉ ip python regex

Câu hỏi thường gặp

Làm thế nào để bạn đại diện cho một địa chỉ IP trong regex?

Trước khi bạn hiểu cách biểu diễn một địa chỉ IP hợp lệ trong Regex, điều quan trọng là phải hiểu hai loại địa chỉ IP khác nhau: IPv4 và IPv6. Các định dạng này khá khác nhau, và yêu cầu các biểu thức thường xuyên riêng biệt để thể hiện chúng.

Một mẫu regex cơ bản cho địa chỉ IPv4 là như sau:



"[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"

Mẫu Regex sau đây sẽ khớp với hầu hết các địa chỉ IPv6:
The following Regex pattern will match most IPv6 addresses:



import re
match = re.match(r"[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}", "127.0.0.1")
print(match)

2

Làm thế nào để bạn kiểm tra xem một chuỗi là địa chỉ IP trong Python?

Cách mạnh mẽ nhất để kiểm tra xem một chuỗi là đầu vào địa chỉ IP hợp lệ hay địa chỉ IP không hợp lệ trong Python có sử dụng mô -đun iPaddress Python hay không. Mô -đun này cung cấp một số phương pháp để xác thực, thao tác và làm việc với địa chỉ IP. Bạn cũng có thể viết một biểu thức thông thường, nhưng đây là dễ bị lỗi hơn và thường không được khuyến khích.