Chuyển đến nội dung
SPCXTools

Kiểm tra Regex

Viết regular expression và xem trực tiếp mọi kết quả khớp, capture group và kết quả thay thế.

Chạy cục bộ — tệp không bao giờ rời khỏi thiết bị của bạn

Đang tải công cụ…

Cách sử dụng Kiểm tra Regex

  1. 1Nhập regular expression của bạn vào ô Pattern — không cần dấu gạch chéo.
  2. 2Chọn các cờ (flag) như g (tìm tất cả), i (không phân biệt hoa thường) hoặc m (nhiều dòng).
  3. 3Dán văn bản cần tìm kiếm vào ô Test string. Các kết quả khớp sẽ được highlight và đếm số lượng ngay lập tức.
  4. 4Xem bảng để biết vị trí của từng kết quả khớp và các capture group.
  5. 5Tích chọn Replace và nhập chuỗi thay thế (ví dụ: $2: $1) để xem trước kết quả của String.replace.

Kiểm tra biểu thức chính quy (Regex) với kết quả trực tiếp

Biểu thức chính quy (regex) rất mạnh mẽ nhưng nổi tiếng là khó đọc. Công cụ kiểm tra regex này hiển thị chính xác hoạt động của pattern ngay khi bạn gõ: mọi kết quả khớp (match) đều được làm nổi bật trong văn bản, đếm số lượng và liệt kê chi tiết vị trí cùng các nhóm bắt (capture groups). Tính năng xem trước thay thế hiển thị kết quả của thao tác tìm-và-thay-thế trước khi bạn chạy trong code. Mọi thứ chạy cục bộ trên trình duyệt của bạn, bên trong một background worker giúp bảo vệ trang web khỏi các pattern chạy vô hạn.

Tính năng

  • Làm nổi bật trực tiếp tất cả các kết quả khớp trong chuỗi kiểm tra.
  • Bật/tắt các cờ (flag) cho g, i, m, s và u, hiển thị đầy đủ cú pháp /pattern/flags.
  • Bảng kết quả khớp với chỉ mục, các nhóm bắt được đánh số và nhóm được đặt tên.
  • Xem trước kết quả thay thế hỗ trợ $1, $<name>, $& và các mẫu thay thế khác.
  • Thông báo lỗi rõ ràng cho cú pháp không hợp lệ và thời gian chờ an toàn 1 giây để tránh lỗi catastrophic backtracking.

Ứng dụng thực tế

Xác thực dữ liệu đầu vào. Xây dựng và kiểm tra pattern cho mã bưu điện, mã sản phẩm hoặc tên người dùng dựa trên danh sách các mẫu hợp lệ và không hợp lệ trước khi đưa vào biểu mẫu.

Trích xuất dữ liệu. Lấy địa chỉ email, URL, ngày tháng hoặc ID từ log và tài liệu. Các nhóm bắt cho phép bạn chia mỗi kết quả khớp thành nhiều phần, ví dụ như người dùng và tên miền.

Tìm kiếm và thay thế. Định dạng lại ngày tháng từ MM/DD/YYYY sang YYYY-MM-DD, đổi tên biến hoặc dọn dẹp dữ liệu xuất. Xem trước kết quả thay thế tại đây, sau đó sử dụng cùng một pattern trong trình soạn thảo hoặc script của bạn.

Học regex. Thử nghiệm với các bộ định lượng (quantifiers), lớp ký tự (character classes) và mỏ neo (anchors) rồi xem kết quả ngay lập tức.

Bảng tra cứu nhanh

Cú pháp Ý nghĩa
. Bất kỳ ký tự nào ngoại trừ ngắt dòng (bất kỳ ký tự nào nếu dùng cờ s)
\d \w \s Chữ số, ký tự chữ, khoảng trắng
[abc] [^abc] Một trong số / không thuộc các ký tự được liệt kê
* + ? 0 hoặc nhiều, 1 hoặc nhiều, 0 hoặc 1
{2,5} Từ 2 đến 5 lần
^ $ Bắt đầu và kết thúc văn bản (của mỗi dòng nếu dùng cờ m)
(…) (?<name>…) Nhóm bắt (capture group), nhóm có tên
(?:…) Nhóm không bắt
(?=…) (?!…) Lookahead, negative lookahead
\b Ranh giới từ

Mặc định các bộ định lượng (quantifier) có tính tham lam (greedy); hãy thêm ? (như trong .*?) để chuyển thành lười biếng (lazy). Để dọn dẹp danh sách sau khi xử lý, hãy thử công cụ Xóa dòng trùng lặp, hoặc so sánh trước và sau bằng Công cụ so sánh văn bản.

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

Công cụ này sử dụng chuẩn regex nào?
Công cụ sử dụng engine regex JavaScript (ECMAScript) của trình duyệt — cùng loại được dùng trong Node.js, Deno và mã front-end. Phần lớn cú pháp giống với PCRE, Python và Java, nhưng có vài điểm khác biệt, ví dụ như possessive quantifiers (không hỗ trợ) và lookbehind (được hỗ trợ trên các trình duyệt hiện đại).
Tại sao regex của tôi chỉ tìm được một kết quả khớp?
Nếu không có cờ g (global), JavaScript sẽ dừng lại ở kết quả khớp đầu tiên. Hãy bật cờ g để tìm mọi kết quả khớp trong văn bản.
Làm cách nào để tham chiếu capture group khi thay thế?
Sử dụng $1, $2, v.v. cho các nhóm đánh số, $<name> cho các nhóm có tên như (?<year>\d{4}), $& cho toàn bộ chuỗi khớp, và $$ cho ký hiệu đô la nguyên bản.
Điều gì xảy ra nếu regex của tôi chạy quá chậm?
Một số pattern, ví dụ như (a+)+$, có thể tốn thời gian xử lý theo cấp số nhân với một số input nhất định ("catastrophic backtracking"). Công cụ này chạy biểu thức của bạn trong một background worker và sẽ buộc dừng sau một giây để trang không bao giờ bị treo. Hãy viết lại pattern để tránh dùng nested quantifiers (lượng từ lồng nhau).
Cờ s và u có tác dụng gì?
s (dotAll) cho phép . khớp với cả ký tự xuống dòng. u (unicode) xử lý pattern và văn bản dưới dạng các điểm mã Unicode (Unicode code points), điều này cần thiết cho emoji và các property escape \p{…} như \p{L} (bất kỳ chữ cái nào).
Văn bản của tôi có bị tải lên máy chủ không?
Không. Quá trình tìm kiếm và thay thế được xử lý cục bộ ngay trên trình duyệt của bạn.