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).
'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$.
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ì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.
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ì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>`.
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
Create a capture pattern to reverse the order of first and last name from `Lastname, Firstname` format to `Firstname Lastname`.
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ử