Các toán tử lặp lại ký tự trong biểu thức chính quy
Có những tình huống chúng ta muốn chỉ định rằng
một ký tự lặp lại một số lần nhất định.
Nếu chúng ta biết chính xác số lần lặp lại,
thì có thể chỉ cần viết nó nhiều lần
- /aaaa/. Nhưng phải làm sao nếu chúng ta muốn
nói điều này: lặp lại một hoặc nhiều
lần?
Để làm điều này, tồn tại các toán tử (bộ định lượng)
lặp lại: dấu cộng + (một hoặc nhiều lần),
dấu sao * (không hoặc nhiều lần) và
dấu hỏi ? (không hoặc một lần). Những
toán tử này tác động lên ký tự đứng
ngay trước chúng.
Hãy xem cách hoạt động của các toán tử này qua các ví dụ.
Ví dụ
Tìm tất cả các chuỗi con theo mẫu ký tự
'x', ký tự 'a' một hoặc nhiều
lần, ký tự 'x':
let str = 'xx xax xaax xaaax xbx';
let res = str.replace(/xa+x/g, '!');
Kết quả trong biến sẽ ghi lại điều sau:
'xx ! ! ! xbx'
Ví dụ
Tìm tất cả các chuỗi con theo mẫu ký tự
'x', ký tự 'a' không hoặc nhiều
lần, ký tự 'x':
let str = 'xx xax xaax xaaax xbx'
let res = str.replace(/xa*x/g, '!');
Kết quả trong biến sẽ ghi lại điều sau:
'! ! ! ! xbx'
Ví dụ
Tìm tất cả các chuỗi con theo mẫu ký tự
'x', ký tự 'a' không hoặc một
lần, ký tự 'x':
let str = 'xx xax xaax xbx';
let res = str.replace(/xa?x/g, '!');
Kết quả trong biến sẽ ghi lại điều sau:
'! ! xaax xbx'
Bài tập thực hành
Cho chuỗi:
let str = 'aa aba abba abbba abca abea';
Viết biểu thức chính quy tìm các chuỗi
'aba', 'abba', 'abbba'
theo mẫu: ký tự 'a', ký tự 'b'
bất kỳ số lần nào, ký tự 'a'.
Cho chuỗi:
let str = 'aa aba abba abbba abca abea';
Viết biểu thức chính quy tìm các chuỗi
'aa', 'aba', 'abba',
'abbba' theo mẫu: ký tự 'a',
ký tự 'b' bất kỳ số lần nào (bao gồm
không lần nào), ký tự 'a'.
Cho chuỗi:
let str = 'aa aba abba abbba abca abea';
Viết biểu thức chính quy tìm các chuỗi
'aa', 'aba' theo mẫu: ký tự
'a', ký tự 'b' một lần hoặc
không lần nào, ký tự 'a'.
Cho chuỗi:
let str = 'aa aba abba abbba abca abea';
Viết biểu thức chính quy tìm các chuỗi
'aa', 'aba', 'abba',
'abbba', mà không bắt 'abca'
và 'abea'.