Regex cho địa chỉ IPv4

Dùng /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/ để kiểm tra toàn bộ chuỗi có phải là địa chỉ IPv4 hợp lệ hay không. Mọi ví dụ bên dưới đều đã được kiểm thử với mẫu này, và bạn có thể mở chúng trong Regex Tester với sẵn dữ liệu mẫu.

Cập nhật

/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/
Mở trong Regex Tester
Đầu vàoKết quả
192.168.1.1✓ Khớp
8.8.8.8✓ Khớp
255.255.255.255✓ Khớp
0.0.0.0✓ Khớp
256.1.1.1✗ Không khớp
192.168.1✗ Không khớp
01.2.3.4✗ Không khớp
1.2.3.4.5✗ Không khớp
192.168.1.1/24✗ Không khớp

Cách mẫu hoạt động

PhầnÝ nghĩa
25[0-5]250–255
2[0-4]\d200–249
1\d\d100–199
[1-9]?\d0–99, không có số 0 đứng đầu
(?:…\.){3}Ba số, mỗi số theo sau là một dấu chấm
(?:…)$Số thứ tư, rồi đến hết chuỗi

Ví dụ code

JavaScript

const re = /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)', value))

PHP

preg_match('/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/', $value) === 1;

Ghi chú và giới hạn

Mỗi octet được kiểm tra nằm trong khoảng 0–255, điều mà một mẫu đơn giản \d{1,3} không làm được. Các số 0 đứng đầu bị từ chối vì một số hệ thống đọc chúng là hệ bát phân (octal). Để chấp nhận ký hiệu CIDR, hãy thêm (?:\/(?:3[0-2]|[12]?\d))? trước $.

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

Regex cho địa chỉ IPv4 là gì?
/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/ — mẫu này khớp với toàn bộ chuỗi. Xem bảng phía trên để biết mỗi phần làm gì.
Những ví dụ nào khớp?
Trong các ví dụ đã kiểm thử, những ví dụ khớp là: 192.168.1.1, 8.8.8.8, 255.255.255.255, 0.0.0.0. Các ví dụ còn lại thì không khớp.
Làm thế nào để kiểm thử regex này?
Nhấn “Mở trong Regex Tester” — mẫu, cờ và văn bản mẫu sẽ tự động được tải, và các đoạn khớp sẽ được tô sáng khi bạn chỉnh sửa.