Đ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:
let 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':
let 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):
`111! 222! 333! 444`;
Tab
Ký tự tab có thể
bắt được bằng lệnh '\t':
let res = str.replace(/\t/g, '!');
Kết quả, biến sẽ ghi nhận giá trị sau:
`
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:
let res = str.replace(/./g, '!');
Kết quả, biến sẽ ghi nhận giá trị sau:
`
!!!
!!!!
!!!!
!!!!
`;
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:
let res = str.replace(/[\s\S]/g, '!');
Kết quả, biến sẽ ghi nhận giá trị sau:
`!!!!!!!!!!!!!!!!!!`;
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:
let res = str.replace(/^/gm, '!');
Kết quả, biến sẽ ghi nhận giá trị sau:
`
!111
!222
!333
!444
`;
Dấu đô la ($)
Lệnh '$' trong chế độ đa dòng
sẽ bắt cuối mỗi dòng:
let res = str.replace(/$/gm, '!');
Kết quả, biến sẽ ghi nhận giá trị sau:
`
111!
222!
333!
444!
`;
Bài tập thực hành
Cho chuỗi:
`
abc
def
ghi
jkl
`;
Viết biểu thức chính quy biến chuỗi này thành chuỗi sau:
`
abc!
def!
ghi!
jkl!
`;
Cho chuỗi:
`
abc
def
ghi
jkl
`;
Viết biểu thức chính quy biến chuỗi này thành chuỗi sau:
`
! abc
! def
! ghi
! jkl
`;
Cho chuỗi:
`
abc
def
ghi
jkl
`;
Viết biểu thức chính quy biến chuỗi này thành chuỗi sau:
`!
abc
def
ghi
jkl
!`;
Cho chuỗi:
`
abc
def
ghi
jkl
`;
Viết biểu thức chính quy biến chuỗi này thành chuỗi sau:
`!
! abc
! def
! ghi
! jkl
!`;
Cho chuỗi:
`
abc
def
ghi
jkl
`;
Viết biểu thức chính quy biến chuỗi này thành chuỗi sau:
`!
abc!
def!
ghi!
jkl!
!`;
Cho chuỗi:
`
abc
def
ghi
jkl
`;
Viết biểu thức chính quy biến chuỗi này thành chuỗi sau:
`
!abc
!def
!ghi
!jkl
`;