Regex kiểm tra tên miền

Dùng /^(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z]{2,}$/ để kiểm tra xem toàn bộ chuỗi có phải là tên miền 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

/^(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z]{2,}$/
Mở trong Regex Tester
Đầu vàoKết quả
example.com✓ Khớp
sub.example.co.uk✓ Khớp
my-site.dev✓ Khớp
-example.com✗ Không khớp
example✗ Không khớp
example-.com✗ Không khớp
https://example.com✗ Không khớp

Mẫu hoạt động như thế nào

PhầnÝ nghĩa
[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?Một nhãn dài 1–63 ký tự, không bắt đầu hoặc kết thúc bằng dấu gạch ngang
\.Một dấu chấm sau mỗi nhãn
(?:…)+Một hoặc nhiều nhãn (tên miền con)
[A-Za-z]{2,}$Tên miền cấp cao nhất (TLD)

Ví dụ code

JavaScript

const re = /^(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z]{2,}$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z]{2,}', value))

PHP

preg_match('/^(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z]{2,}$/', $value) === 1;

Ghi chú và giới hạn

Tên miền quốc tế cần được chuyển sang dạng punycode (xn--…) trước. Bạn có thể tra cứu bản ghi DNS của tên miền bằng DNS Lookup.

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

Regex cho tên miền là gì?
/^(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z]{2,}$/ — mẫu này khớp với toàn bộ chuỗi. Xem bảng ở trên để biết mỗi phần làm gì.
Những ví dụ nào khớp?
Trong các ví dụ đã thử, những ví dụ khớp là: example.com, sub.example.co.uk, my-site.dev. Các ví dụ còn lại thì không khớp.
Làm sao để 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 nạp, và các kết quả khớp sẽ được tô sáng khi bạn chỉnh sửa.