Chuyển đến nội dung chính
Mô-đun 7 · Bài học 2 trong tổng số 426/32 trong khóa học~10 min
Bài học theo mô-đun (2/4)

Thay thế cơ bản và `$1`

Trong JavaScript, String.prototype.replace(regex, replacement) thực hiện một khớp mẫu và thay thế từng kết quả khớp bằng chuỗi đã cho. Với g gắn cờ nó thay thế tất cả kết quả phù hợp; không có nó, chỉ có cái đầu tiên. replaceAll buộc hành vi toàn cầu (và yêu cầu cờ g trên biểu thức chính quy).

JS
'ciao mondo'.replace(/o/g, '0'); // "cia0 m0nd0"
'Mario Rossi'.replace(/(\w+) (\w+)/, '$2 $1'); // "Rossi Mario"

Tham chiếu trong chuỗi thay thế

Bên trong chuỗi thay thế, đây là những chuỗi đặc biệt:

  • $1, $2, \u2026 -- tham chiếu ngược đến nhóm được đánh số của biểu thức chính quy.
  • $<name> -- phản đối nhóm được đặt tên.
  • $& -- toàn bộ trận đấu.
  • `$`` -- text before the match.
  • $' -- text after the match.
  • $$ -- a single literal $.
JS
const data = '2024-03-15';
data.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3/$2/$1');
// "15/03/2024"

Định dạng lại ngày bằng cách đảo ngược thứ tự. Regex có 3 nhóm và trong chuỗi thay thế mà bạn tham chiếu chúng là $1, $2, $3.

Tài liệu tham khảo đặc biệt trong thay thế

Ngoài $1 và $2, bạn có thể sử dụng $& để chèn toàn bộ văn bản phù hợp, $ for all text preceding the match, and$'` cho tất cả văn bản theo sau nó. Điều này cho phép thay thế phong phú ngay cả khi không cần viết mã JS.

Hãy thử nó

tập thể dục#regex.m7.l2.e1
Nỗ lực: 0Đang tải…

Tìm mọi ngày ở định dạng YYYY-MM-DD với ba nhóm (năm, tháng, ngày). Bằng cách này, bạn có thể sử dụng thay thế để lấy DD/MM/YYYY.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Thay thế \\d+ bằng \\d{4}, \\d{2}, \\d{2} bên trong ba nhóm được ghi lại bằng (...).

Giải pháp khả dụng sau 3 lần thử

Xem lại bài tập

tập thể dục#regex.m7.l2.e2
Nỗ lực: 0Đang tải…

Tìm 'đầu tiên cuối cùng' dưới dạng hai nhóm được đặt tên `nome` và `cognome`, do đó bạn có thể viết lại nó thành `cognome, nome` bằng cách sử dụng `$<cognome>, $<nome>`.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Sử dụng (?<nome>\\w+) và (?<cognome>\\w+) cách nhau bằng \\s+.

Giải pháp khả dụng sau 3 lần thử

Thử thách bổ sung

tập thể dục#regex.m7.l2.e3
Nỗ lực: 0Đang tải…

Create a capture pattern to reverse the order of first and last name from `Lastname, Firstname` format to `Firstname Lastname`.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Use two capture groups for last and first name; the replacement will be performed via $2 $1.

Giải pháp khả dụng sau 3 lần thử