Tìm và thay thế “từ” bằng “chữ” trong Mẫu B của site cho kết quả 2 lần thay, còn regex \d+ thay bằng “#” biến “Giá 250.000đ” thành “Giá #.#đ” sau 2 lần thay. Công cụ nhận nhiều cặp tìm/thay chạy liên tiếp, đếm số lần thay của từng cặp và tô sáng chỗ tìm thấy trên văn bản gốc. Văn bản xử lý trên trình duyệt, không lưu dữ liệu.
Cách tìm và thay thế nhiều cặp trong một lượt
Mỗi cặp là một ô “Tìm” và một ô “Thay bằng”; các cặp chạy lần lượt từ trên xuống, cặp sau tìm trên kết quả của cặp trước.
- Dán văn bản vào ô “Văn bản gốc”. Công cụ chuẩn hoá về dạng dựng sẵn NFC, nên chữ gõ bằng bảng mã tổ hợp vẫn khớp với chữ bạn gõ vào ô tìm.
- Điền cặp đầu tiên. Trang mở sẵn 2 cặp; bấm “Thêm cặp tìm/thay” để thêm, nút “Xoá” cạnh mỗi cặp để bỏ.
- Chọn tuỳ chọn áp dụng cho mọi cặp: “Dùng biểu thức chính quy (regex)”, “Phân biệt hoa/thường”, “Chỉ khớp cả chữ”.
- Đọc kết quả: cạnh mỗi cặp hiện “n lần” hoặc “lỗi”; ô tổng cho “lần đã thay” và “ký tự sau khi thay”; phần “Chỗ tìm thấy trên văn bản gốc” tô mỗi cặp một màu.
| Tuỳ chọn | Mặc định | Tác dụng |
|---|---|---|
| Dùng biểu thức chính quy (regex) | Tắt | Ô tìm hiểu cú pháp regex của JavaScript; ô thay dùng được $1, $2 và $& |
| Phân biệt hoa/thường | Bật | Tắt đi thì “Từ”, “từ”, “TỪ” đều khớp |
| Chỉ khớp cả chữ | Tắt | Bỏ qua chỗ tìm thấy dính liền chữ cái, chữ số hay dấu gạch dưới, như “từ” nằm trong “từng” |
Khi không bật regex, mọi ký tự trong ô tìm được hiểu đúng như gõ, kể cả dấu chấm và dấu ngoặc, còn “$1” trong ô thay là chữ “$1” thật. Số ký tự sau khi thay đếm theo quy tắc chung trình bày ở phương pháp đếm.
Ví dụ: chuẩn hoá bản thảo theo quy ước của toà soạn
Một biên tập viên nhận bài cộng tác viên cần đổi thuật ngữ, che số và đảo họ tên; mọi dòng trong bảng là kết quả của bộ kiểm thử.
| Văn bản | Tìm → Thay, tuỳ chọn | Kết quả | Số lần |
|---|---|---|---|
| Mẫu B (3 câu về công cụ đếm từ) | từ → chữ | “đếm số chữ, ký tự…” | 2 |
| Giá 250.000đ | \d+ → #, bật regex | Giá #.#đ | 2 |
| từng từ | từ → x, bật chỉ khớp cả chữ | từng x | 1 |
| Từ từ | từ → x, tắt phân biệt hoa/thường | x x | 2 |
| Nguyễn An | (\S+) (\S+) → $2 $1, bật regex | An Nguyễn | 1 |
| giá X | X → $1, tắt regex | giá $1 | 1 |
Dòng thứ hai là chỗ hay nhầm: \d+ tìm dãy chữ số liền nhau, và dấu chấm phân cách nghìn cắt “250.000” thành hai dãy nên có 2 lần thay chứ không phải 1. Bộ kiểm thử còn thử hai tình huống khác. Cặp regex lỗi “(” bị báo lỗi và bỏ qua, cặp “b → B” phía sau vẫn chạy, “abc” thành “aBc”. Hai cặp “a → b” rồi “b → c” chạy lần lượt nên “a” cuối cùng thành “c”.
Năm mẫu regex dùng được ngay cho văn bản tiếng Việt
Bật “Dùng biểu thức chính quy (regex)” rồi dán mẫu vào ô tìm; các mẫu này đã chạy thử trên chính công cụ.
| Việc cần làm | Tìm | Thay bằng | Trước → sau |
|---|---|---|---|
| Bỏ dấu cách trước dấu câu | [ ]+([,;!?]) | $1 | “Xin chào , bạn” → “Xin chào, bạn” |
| Bỏ dấu chấm phân cách nghìn | (\d)\.(?=\d{3}) | $1 | “1.250.000đ” → “1250000đ” |
| Tách số điện thoại 10 số | (\d{4})(\d{3})(\d{3}) | $1 $2 $3 | “0912345678” → “0912 345 678” |
| Che phần tên của email | [\w.]+@ | ***@ | “[email protected]” → “***@abc.vn” |
| Đảo họ và tên (một dòng) | (.+) (.+) | $2, $1 | “Nguyễn Văn An” → “An, Nguyễn Văn” |
Mẫu cuối hữu ích khi cần sắp xếp dòng theo tên thay vì theo họ: đảo, sắp, rồi đảo lại. Tôi khuyên thử mẫu regex trên vài dòng trước khi dán cả tài liệu, vì một mẫu viết thiếu có thể khớp nhiều hơn bạn nghĩ.
Trường hợp đặc biệt khi thay chữ tiếng Việt
Ba lỗi thường gặp đều đến từ việc máy so ký tự, không hiểu chữ.
Thứ nhất, \b trong regex JavaScript chỉ coi a–z, 0–9 và dấu gạch dưới là ký tự chữ. Với tiếng Việt, mẫu \btừ\b vẫn khớp phần “từ” trong “từng”, vì “ừ” không được coi là chữ nên máy tưởng có ranh giới ngay sau nó. Hãy dùng tuỳ chọn “Chỉ khớp cả chữ” của công cụ, tuỳ chọn này nhận đủ chữ cái Unicode.
Thứ hai, khi tắt phân biệt hoa/thường, chỗ được thay luôn mang đúng chuỗi trong ô “Thay bằng”. Thay “hóa” bằng “hoá” trên “Hóa đơn” sẽ ra “hoá đơn” viết thường; muốn giữ chữ hoa đầu câu, tạo thêm một cặp riêng “Hóa → Hoá” và để bật phân biệt hoa/thường.
Thứ ba, trong chế độ regex, dấu chấm khớp mọi ký tự và dấu ngoặc tạo nhóm. Tìm “.” để thay dấu chấm thành gạch nối sẽ biến “a.b.c” thành năm dấu gạch. Viết \., hoặc tắt regex nếu bạn chỉ cần thay chữ thường. Phần tô sáng luôn vẽ trên văn bản gốc, nên với cặp thứ hai trở đi, chỗ tô có thể khác chỗ thật sự được thay.
Công cụ liên quan
- Đếm và tô sáng từ khoá chỉ đếm, không sửa, hợp khi muốn biết một cụm xuất hiện bao nhiêu lần trước khi thay.
- Xoá khoảng trắng thừa dọn dấu cách kép và tab nhanh hơn viết regex.
- So sánh 2 văn bản đặt bản gốc cạnh bản đã thay để soát lại từng chỗ đổi.
- Xoá dấu tiếng Việt xử lý toàn bộ chữ có dấu một lượt, không cần liệt kê từng cặp.
Câu hỏi thường gặp
Tìm và thay thế trong Word có dùng regex được không?
Word không dùng regex chuẩn mà có Use wildcards trong hộp Tìm và Thay (Ctrl+H), cú pháp riêng: [0-9]{1,} thay cho \d+, \1 thay cho $1. Mẫu regex trên trang này không dán thẳng vào Word được. Tìm và thay thế ở đây theo cú pháp JavaScript, giống phần lớn trình soạn thảo code.
Thay nhiều từ cùng lúc có bị thay chồng lên nhau không?
Có thể, vì các cặp chạy lần lượt: cặp sau tìm trên kết quả của cặp trước. Đổi “a → b” rồi “b → c” thì chữ “a” ban đầu cũng thành “c”. Muốn hoán đổi hai chữ cho nhau, dùng một chữ tạm không có trong văn bản, ví dụ “A → @@”, “B → A”, “@@ → B”.
Làm sao chỉ thay chữ đứng riêng, không thay trong chữ khác?
Bật “Chỉ khớp cả chữ”. Khi đó “từ” không khớp bên trong “từng”, chỉ khớp khi hai bên là dấu cách, dấu câu hoặc đầu cuối văn bản. Tuỳ chọn này hiểu chữ có dấu tiếng Việt, khác với \b trong regex chỉ hiểu chữ cái tiếng Anh.
Vì sao báo “Biểu thức không hợp lệ”?
Ô tìm có cú pháp regex sai, thường là dấu ngoặc mở không có ngoặc đóng, hoặc dấu *, +, ? đứng đầu mẫu. Công cụ báo số thứ tự cặp lỗi và bỏ qua cặp đó, các cặp khác vẫn chạy. Nếu bạn chỉ muốn tìm đúng ký tự “(” hay “?”, tắt regex là xong.
Có hoàn tác được sau khi thay không?
Văn bản gốc trong ô bên trên không bị sửa; kết quả nằm ở ô “Văn bản sau khi thay”. Đổi hay xoá một cặp, kết quả tính lại ngay từ bản gốc. Vì vậy không cần hoàn tác, chỉ cần sửa cặp tìm/thay. Công cụ không lưu văn bản, tải lại trang là mất cả hai ô.
Căn cứ và nguồn
- Regular expressions — MDN: cú pháp regex của JavaScript, cờ g, i, u và nhóm bắt.
- String.prototype.replace() — MDN: mẫu thay $1, $& và $$ trong chuỗi thay thế.
- Unicode Standard Annex #15, Unicode Normalization Forms: chuẩn hoá NFC để chữ gõ theo hai bảng mã vẫn khớp nhau.
Kiểm tra: 16/09/2026. Tìm và thay thế chạy theo cú pháp regex của trình duyệt; mẫu regex viết cho Word, Excel hay Python có thể cần sửa trước khi dùng.