Các nhóm ký tự trong biểu thức chính quy JavaScript
Tồn tại các lệnh đặc biệt cho phép
chọn ngay lập tức toàn bộ nhóm ký tự. Lệnh
\d có nghĩa là chữ số từ 0 đến 9.
Lệnh \w biểu thị chữ số, chữ cái Latinh
hoặc dấu gạch dưới. Lệnh \s
biểu thị khoảng trắng hoặc ký tự khoảng trắng:
dấu cách, xuống dòng, tab.
Có thể đảo ngược giá trị của lệnh bằng cách viết chữ hoa:
ví dụ: nếu \d - là chữ số,
thì \D - không phải là chữ số.
Ví dụ
Hãy tìm tất cả các chữ số:
let str = '1 12 123';
let res = str.replace(/\d/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'! !! !!!'
Ví dụ
Các toán tử lặp coi các lệnh-nhóm
là một thể thống nhất, tức là dấu ngoặc nhóm
không cần thiết. Trong ví dụ tiếp theo, mẫu tìm kiếm
trông như thế này: chữ số từ 0 đến 9
một hoặc nhiều lần:
let str = '1 12 123 abc @@@';
let res = str.replace(/\d+/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'! ! ! abc @@@'
Ví dụ
Trong ví dụ tiếp theo, mẫu tìm kiếm trông
như thế này: bất cứ thứ gì một hoặc nhiều lần,
nhưng không phải chữ số từ 0 đến 9:
let str = '123abc3@@';
let res = str.replace(/\D+/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'123!3!'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này: ký tự khoảng trắng một lần:
let str = '1 12 123 abc @@@';
let res = str.replace(/\s/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'1!12!123!abc!@@@'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này:
KHÔNG phải ký tự khoảng trắng một hoặc nhiều lần.
Tất cả các chuỗi con, được phân tách bằng dấu cách, sẽ được thay thế
bằng '!':
let str = '1 12 123 abc @@@';
let res = str.replace(/\S+/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'! ! ! ! !'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này:
chữ số hoặc chữ cái một hoặc nhiều lần.
Tất cả các chuỗi con, bao gồm chữ số và chữ cái,
sẽ được thay thế bằng '!':
let str = '1 12 123a Abc @@@';
let res = str.replace(/\w+/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'! ! ! ! @@@'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này:
KHÔNG phải chữ số và KHÔNG phải chữ cái một hoặc nhiều lần.
Theo định nghĩa này, trong trường hợp của chúng ta, phù hợp là
'@@@' và tất cả các dấu cách (chúng cũng
không phải chữ số và không phải chữ cái). Hãy chú ý đến
việc ở cuối có một '!' - vào đó
được chuyển đổi chuỗi ' @@@' - với
dấu cách ở phía trước:
let str = '1 12 123 Abc @@@';
let res = str.replace(/\W+/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'1!12!123!Abc!'
Bài tập thực hành
Cho chuỗi:
let str = 'a1a a2a a3a a4a a5a aba aca';
Viết biểu thức chính quy tìm các chuỗi,
trong đó ở hai bên là các chữ cái 'a',
và giữa chúng là một chữ số.
Cho chuỗi:
let str = 'a1a a22a a333a a4444a a55555a aba aca';
Viết biểu thức chính quy tìm các chuỗi,
trong đó ở hai bên là các chữ cái 'a',
và giữa chúng là bất kỳ số lượng chữ số nào.
Cho chuỗi:
let str = 'aa a1a a22a a333a a4444a a55555a aba aca';
Viết biểu thức chính quy tìm các chuỗi,
trong đó ở hai bên là các chữ cái 'a',
và giữa chúng là bất kỳ số lượng chữ số nào (bao gồm
cả số không chữ số, tức là chuỗi 'aa').
Cho chuỗi:
let str = 'avb a1b a2b a3b a4b a5b abb acb';
Viết biểu thức chính quy tìm các chuỗi
dạng sau: ở hai bên là các chữ cái
'a' và 'b', và giữa chúng - không phải
số và không phải dấu cách.
Cho chuỗi:
let str = 'ave a#b a2b a$b a4b a5b a-b acb';
Viết biểu thức chính quy tìm các chuỗi
dạng sau: ở hai bên là các chữ cái
'a' và 'b', và giữa chúng - không
phải chữ cái, không phải chữ số và không phải dấu cách.
Cho chuỗi:
let str = 'ave a#a a2a a$a a4a a5a a-a aca';
Viết biểu thức chính quy thay thế tất cả các dấu cách
bằng '!'.