Nhóm bắt (Capture groups) trong phương thức replace của biểu thức chính quy JavaScript
Khi làm việc với phương thức replace, nếu
chúng ta đặt gì đó vào một nhóm bắt trong biểu thức chính quy, thì
trong chuỗi thay thế, chúng ta có thể chèn nội dung của
nhóm bắt đó bằng cách viết ký hiệu đô la $
và số thứ tự của nhóm bắt. Ví dụ, $1 - nhóm bắt
đầu tiên, $2 - nhóm bắt thứ hai và cứ tiếp tục như vậy.
Hãy cùng xem các ví dụ để biết tính năng này hữu ích như thế nào và cách sử dụng nó.
Ví dụ
Hãy tìm tất cả các số và thay chúng bằng chính các số đó, nhưng đặt trong dấu ngoặc tròn. Để làm điều này, tất cả các số tìm được chúng ta sẽ thay thế bằng chính chúng, nhưng có dấu ngoặc:
let str = '1 23 456 xax';
let res = str.replace(/(\d+)/g, '($1)');
Kết quả, biến sẽ chứa giá trị sau:
'(1) (23) (456) xax'
Ví dụ
Hãy tìm tất cả các chuỗi đại diện cho
các số với ký tự 'x' xung quanh và thay thế các
số này bằng chính chúng, nhưng với ký tự '!' xung quanh:
let str = 'x1x x23x x456x xax';
let res = str.replace(/x(\d+)x/g, '!$1!');
Kết quả, biến sẽ chứa giá trị sau:
'!1! !23! !456! xax'
Ví dụ
Hãy giải quyết bài toán sau: cho các chuỗi
dạng 'aaa@bbb' - chữ cái, sau đó là ký tự @,
rồi đến chữ cái. Cần đổi chỗ các chữ cái
trước @ và sau @.
let str = 'aaa@bbb ccc@ddd';
let res = str.replace(/([a-z]+)@([a-z]+)/g, '$2@$1');
Kết quả, biến sẽ chứa giá trị sau:
'bbb@aaa ddd@ccc'
Bài tập thực hành
Cho chuỗi:
let str = '12 34 56 78';
Hãy đảo ngược vị trí các chữ số trong tất cả các số có hai chữ số.
Cho chuỗi chứa ngày tháng:
let str = '31.12.2025';
Hãy chuyển đổi ngày tháng này thành dạng '2025.12.31'.