Chuyển đến nội dung

Kiểm tra biểu thức chính quy (regex)

Thử biểu thức chính quy JavaScript trên văn bản của bạn, với tô sáng kết quả khớp trực tiếp, nhóm bắt và giải thích dễ hiểu, ngay trên trình duyệt.

Kiểu regex JavaScript (ECMAScript)Cùng công cụ xử lý với trình duyệt, Node.js và Deno
//g

$1 hoặc $<name> chèn một nhóm, $& là toàn bộ phần khớp, $` và $' là văn bản đứng trước và sau, $$ là dấu đô la.

Kết quả khớp và nhóm bắt sẽ hiện ở đây.

Chạy ngay trên trình duyệt · không cần tải lênCách hoạt động

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

  1. 1

    Nhập biểu thức

    Gõ biểu thức chính quy không kèm dấu gạch chéo; cờ được bật ở các nút bên dưới.

  2. 2

    Thêm chuỗi kiểm tra

    Dán văn bản cần tìm; kết quả khớp được tô sáng và liệt kê cùng các nhóm bắt ngay khi bạn gõ.

  3. 3

    Xem phần giải thích

    Mở Giải thích để đọc từng token bằng ngôn ngữ dễ hiểu và biết biểu thức thực sự làm gì.

  4. 4

    Xem trước phép thay thế

    Nhập nội dung thay bằng $1 hoặc $<name> để xem kết quả, rồi sao chép mã từ tab Mã.

Giới hạn và Pro

Miễn phí, không cần đăng ký: đếm tối đa 100.000 kết quả khớp, tô sáng 2.000 và liệt kê 200 trong bảng; tô sáng áp dụng cho chuỗi kiểm tra đến 200.000 ký tự, và mỗi lần chạy bị dừng sau 1,5 giây.

Pro gỡ quảng cáo; công cụ hoạt động giống nhau ở mọi gói. Xem Pro

Về Kiểm tra regex

Công cụ này chạy biểu thức chính quy của bạn bằng engine regex JavaScript (ECMAScript) tích hợp sẵn trong trình duyệt – cùng engine với Node.js, Deno, Bun và mọi trang web – nên kết quả khớp ở đây cũng sẽ khớp trong mã của bạn. Nhập biểu thức và chuỗi kiểm tra, mọi kết quả khớp được tô sáng ngay khi bạn gõ, kèm bảng vị trí, nhóm bắt số thứ tự, nhóm có tên, cùng điểm bắt đầu và kết thúc của từng nhóm khi bật cờ d.

Bạn có thể bật tắt cả tám cờ: g để tìm mọi kết quả khớp, i để không phân biệt hoa thường, m để ^ và $ áp dụng cho từng dòng, s để dấu chấm khớp cả ký tự xuống dòng, u để hỗ trợ Unicode đầy đủ và \p{…}, v cho tập Unicode với phép giao và phép trừ trong ngoặc vuông, y để khớp dính và d để lấy chỉ số. Ô thay thế cho xem trước String.prototype.replace với $1, $<name>, $& và các mã thay thế khác, còn tab Mã cung cấp đoạn mã dạng literal, matchAll và RegExp().

Tab Giải thích tách biểu thức thành từng token và nói bằng tiếng thường mỗi token làm gì – nhóm, lookaround, lớp ký tự, bộ lặp và việc chúng tham lam hay lười. Bảng tra nhanh chèn các token phổ biến vào vị trí con trỏ.

Việc so khớp chạy trong Web Worker nền với giới hạn 1,5 giây. Biểu thức bị backtracking thảm họa, như (a+)+b với một chuỗi dài toàn chữ a, sẽ bị dừng kèm lời giải thích thay vì làm treo tab. Biểu thức viết cho PCRE, Python hay .NET có thể cần sửa: bộ lặp chiếm hữu, nhóm nguyên tử, đệ quy, \A và \Z không có trong JavaScript.

Quyền riêng tư

Biểu thức và chuỗi kiểm tra chỉ nằm trong tab trình duyệt này: việc so khớp diễn ra trong Web Worker cục bộ, không có gì bạn gõ bị tải lên, ghi log hay lưu lại, nên bạn có thể yên tâm thử với dòng log hoặc dữ liệu khách hàng thật.

Tính năng

Engine JS thật

Khớp y như RegExp trong trình duyệt và Node.js, kể cả tập của cờ v và nhóm có tên.

Giải thích từng token

Mỗi nhóm, lớp ký tự, neo và bộ lặp đều được mô tả bằng ngôn ngữ dễ hiểu.

Chống backtracking

Việc so khớp chạy trong worker với giới hạn 1,5 giây, nên biểu thức lỗi không làm treo trang.

Kiểm tra regex: câu hỏi thường gặp

Công cụ này dùng loại regex nào?
Regex của JavaScript, theo chuẩn ECMAScript và do chính trình duyệt của bạn triển khai. Nó hỗ trợ lookbehind, nhóm có tên, Unicode property escape và cờ v, nhưng không có tính năng của PCRE như bộ lặp chiếm hữu, nhóm nguyên tử, đệ quy hay điều kiện. Cú pháp (?P<name>…) của Python phải viết thành (?<name>…). Kết quả giống Node.js và Deno khi dùng cùng phiên bản engine.
Vì sao biểu thức chỉ tìm thấy kết quả đầu tiên?
Không có cờ g, JavaScript dừng sau kết quả khớp đầu tiên: exec và match chỉ trả về một kết quả, còn replace chỉ đổi lần xuất hiện đầu. Hãy bật g để tìm và thay thế mọi kết quả. Cờ dính y thì khác: nó chỉ khớp đúng tại vị trí kết thúc của lần khớp trước, hữu ích cho bộ tách token.
Backtracking thảm họa là gì?
Khi một biểu thức có thể khớp cùng một đoạn văn bản theo nhiều cách, như bộ lặp lồng nhau (a+)+ hay (.*)*, một lần khớp thất bại sẽ buộc engine thử mọi tổ hợp, và số lần thử tăng theo cấp số nhân với độ dài đầu vào. Ở đây quá trình bị dừng sau 1,5 giây kèm cảnh báo. Hãy sửa bằng cách làm các lựa chọn loại trừ nhau, ví dụ [^,]* thay cho .* trước dấu phẩy.
Dùng nhóm bắt trong phần thay thế thế nào?
Viết $1, $2 và tiếp theo cho nhóm đánh số, hoặc $<name> cho nhóm có tên như (?<year>\d{4}). $& chèn toàn bộ kết quả khớp, $` chèn văn bản phía trước, $' chèn văn bản phía sau, còn $$ tạo ra một dấu đô la nguyên văn. Nút Thử một ví dụ nạp biểu thức ngày tháng để sắp xếp lại năm, tháng, ngày theo cách này.
Khi nào cần cờ u hoặc v?
Dùng u khi văn bản có emoji hoặc ký tự nằm ngoài Basic Multilingual Plane, để dấu chấm và bộ lặp coi chúng là một ký tự, và để dùng thuộc tính Unicode kiểu \p{L}. Cờ v mới hơn gồm mọi thứ của u và thêm phép toán tập hợp trong ngoặc vuông, như [\p{L}--[a-z]] cho chữ cái ngoài ASCII. Hai cờ này không thể dùng cùng nhau.