Cách mẫu hoạt động
| Phần | Ý nghĩa |
|---|---|
^https? | Bắt đầu bằng http, theo sau tùy chọn là s |
:\/\/ | Chuỗi :// nguyên văn (dấu gạch chéo được escape cho regex literal trong JavaScript) |
[A-Za-z0-9.-]+ | Tên miền và subdomain |
\.[A-Za-z]{2,} | Dấu chấm và tên miền cấp cao nhất gồm từ hai chữ cái trở lên |
(?::\d{1,5})? | Cổng tùy chọn như :8080 |
(?:\/[^\s]*)? | Đường dẫn, chuỗi truy vấn và fragment tùy chọn — bất kỳ nội dung nào đến khoảng trắng |
$ | Kết thúc chuỗi |
Ví dụ code
JavaScript
const re = /^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/;
re.test(value); // true or falsePython
import re
bool(re.fullmatch(r'https?://[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:/[^\s]*)?', value))PHP
preg_match('/^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/', $value) === 1;
Ghi chú và giới hạn
Để kiểm tra hợp lệ trong JavaScript, new URL(value) bên trong try/catch sẽ chặt chẽ hơn và xử lý mọi trường hợp biên; hãy dùng regex khi bạn cũng muốn yêu cầu http(s) và một tên miền có vẻ công khai. Mẫu này cố ý từ chối localhost và địa chỉ IP đứng riêng.
Kiểm tra Regex
Nhập mẫu và xem các kết quả khớp được tô sáng ngay trong văn bản thử nghiệm.