Đa dòng trong biểu thức chính quy JavaScript

Biểu thức chính quy khi làm việc với chuỗi đa dòng có những đặc điểm riêng. Hãy cùng tìm hiểu chúng thông qua ví dụ về chuỗi sau đây, chứa các ký tự thông thường, ký tự xuống dòng và tab:

javascriptlet str = `111
  222
  333
  444`;

Xuống dòng

Ký tự xuống dòng có thể bắt được bằng lệnh '\n':

javascriptlet res = str.replace(/\n/g, '!');

Kết quả, biến sẽ ghi nhận giá trị sau (khoảng trống giữa các dòng là tab):

javascript`111!  222!  333!  444`;

Tab

Ký tự tab có thể bắt được bằng lệnh '\t':

javascriptlet res = str.replace(/\t/g, '!');

Kết quả, biến sẽ ghi nhận giá trị sau:

javascript`
                111
                !222
                !333
                !444
            `;

Hoạt động của dấu chấm

Lệnh '.' đối với chuỗi đa dòng không bắt được ký tự xuống dòng:

javascriptlet res = str.replace(/./g, '!');

Kết quả, biến sẽ ghi nhận giá trị sau:

javascript`
                !!!
                !!!!
                !!!!
                !!!!
            `;

Ký tự bất kỳ

Để bắt tất cả các ký tự trong chuỗi đa dòng, người ta dùng một thủ thuật khéo léo là kết hợp [\s\S]. Cấu trúc như vậy sẽ tìm được tất cả các ký tự thông thường và tất cả các ký tự xuống dòng:

javascriptlet res = str.replace(/[\s\S]/g, '!');

Kết quả, biến sẽ ghi nhận giá trị sau:

javascript`!!!!!!!!!!!!!!!!!!`;

Dấu mũ (^)

Với bổ từ 'm' có thể bật chế độ đa dòng. Trong trường hợp này, dấu mũ sẽ bắt đầu mỗi dòng:

javascriptlet res = str.replace(/^/gm, '!');

Kết quả, biến sẽ ghi nhận giá trị sau:

javascript`
                !111
                !222
                !333
                !444
            `;

Dấu đô la ($)

Lệnh '$' trong chế độ đa dòng sẽ bắt cuối mỗi dòng:

javascriptlet res = str.replace(/$/gm, '!');

Kết quả, biến sẽ ghi nhận giá trị sau:

javascript`
                111!
  222!
  333!
  444!
            `;

Bài tập thực hành

Задание 1

Cho chuỗi:

javascript`
  abc
  def
  ghi
  jkl
`;

Viết biểu thức chính quy biến chuỗi này thành chuỗi sau:

javascript`
  abc!
  def!
  ghi!
  jkl!
`;
Задание 2

Cho chuỗi:

javascript`
  abc
  def
  ghi
  jkl
`;

Viết biểu thức chính quy biến chuỗi này thành chuỗi sau:

javascript`
!  abc
!  def
!  ghi
!  jkl
`;
Задание 3

Cho chuỗi:

javascript`
  abc
  def
  ghi
  jkl
`;

Viết biểu thức chính quy biến chuỗi này thành chuỗi sau:

javascript`!
  abc
  def
  ghi
  jkl
!`;
Задание 4

Cho chuỗi:

javascript`
  abc
  def
  ghi
  jkl
`;

Viết biểu thức chính quy biến chuỗi này thành chuỗi sau:

javascript`!
!  abc
!  def
!  ghi
!  jkl
!`;
Задание 5

Cho chuỗi:

javascript`
  abc
  def
  ghi
  jkl
`;

Viết biểu thức chính quy biến chuỗi này thành chuỗi sau:

javascript`!
  abc!
  def!
  ghi!
  jkl!
!`;
Задание 6

Cho chuỗi:

javascript`
  abc
  def
  ghi
  jkl
`;

Viết biểu thức chính quy biến chuỗi này thành chuỗi sau:

javascript`
                    !abc
                    !def
                    !ghi
                    !jkl
`;