Chuyển đến nội dung chính
Mô-đun 8 · Bài học 3 trong tổng số 431/32 trong khóa học~12 min
Bài học theo mô-đun (3/4)

Trích xuất URL và IP

Trong văn bản tự do (nhật ký, bài viết, kết xuất), thông thường người ta muốn trích xuất URL và địa chỉ IP. Chúng ta hãy xem xét các mô hình mạnh mẽ cho cả hai.

URL http/https

Code
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?
  • https?:\/\/ -- lược đồ, với s tùy chọn.
  • [\w.-]+ -- máy chủ (tên miền, tên miền phụ, có thể là localhost).
  • (?:\:\d+)? -- cổng tùy chọn.
  • (?:\/[^\s]*)? -- đường dẫn tùy chọn, tối đa khoảng trắng đầu tiên.

Chụp https://example.com, http://localhost:3000/api/users, https://docs.dev/path?query=value.

IPv4

IPv4 là 4 octet thập phân được phân tách bằng dấu chấm:

Code
Pattern: \b(?:\d{1,3}\.){3}\d{1,3}\b

Phiên bản "Đủ tốt": nó cũng chấp nhận các giá trị không hợp lệ như 999.999.999.999. Đối với phiên bản nghiêm ngặt bạn cần thay đổi phạm vi (25[0-5]|2[0-4]\d|[01]?\d\d?), dài hơn nhiều.

Code
Pattern (strict): \b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\b

Chính xác và ngắn gọn

Việc so khớp URL hoặc IP yêu cầu dung sai mẫu cân bằng. Trình xác thực IP nghiêm ngặt xác minh rằng không có octet nào vượt quá 255. Mặt khác, trình trích xuất thực tế thường tìm kiếm các mẫu đơn giản hóa và ủy quyền xác thực tốt cho mã chuyên dụng.

Hãy thử nó

tập thể dục#regex.m8.l3.e1
Nỗ lực: 0Đang tải…

Tìm mọi URL http hoặc https trong văn bản. Lược đồ + máy chủ + đường dẫn tùy chọn.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

https? đối với s tùy chọn, [\\w.-]+ cho tên miền và một nhóm (?:\\/[^\\s]*)? cho đường dẫn tùy chọn.

Giải pháp khả dụng sau 3 lần thử

Xem lại bài tập

tập thể dục#regex.m8.l3.e2
Nỗ lực: 0Đang tải…

Tìm mọi IPv4 (4 octet thập phân cách nhau bằng dấu chấm). Phiên bản cho phép, không kiểm tra 0-255.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Sử dụng (?:\\d{1,3}\\.){3} để lặp lại 'octet + dấu chấm' 3 lần, sau đó là \\d{1,3} cho lần cuối cùng.

Giải pháp khả dụng sau 3 lần thử

Thử thách bổ sung

tập thể dục#regex.m8.l3.e3
Nỗ lực: 0Đang tải…

Find all IPv4 addresses in the format `X.X.X.X` (composed of four 1-to-3 digit numbers separated by dots).

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Use \b to enforce boundaries, (?:\d{1,3}\.){3} to repeat the octet and dot three times, and finally \d{1,3}.

Giải pháp khả dụng sau 3 lần thử