Bộ ký tự trong biểu thức chính quy JavaScript
Các nhóm ký tự \d và \w không
linh hoạt lắm. Ngay cả một nhiệm vụ đơn giản như
tìm tất cả các chữ cái, nhưng không phải chữ số -
cũng không thể giải quyết được bằng chúng. Đối với những nhiệm vụ như vậy,
nên sử dụng dấu ngoặc vuông, biểu thị
một phép toán 'hoặc'.
Dấu ngoặc vuông thay thế cho một ký tự,
là bất kỳ ký tự nào được liệt kê bên trong. Ví dụ,
như thế này: /x[abc]x/ - chúng ta nói rằng
ở hai bên phải là chữ x, và ở giữa
- một ký tự: hoặc là 'a', hoặc 'b',
hoặc 'c'.
Sau dấu ngoặc vuông, có thể viết các toán tử
lặp lại. Ví dụ, như thế này: /x[abc]+x/
- chúng ta nói rằng giữa các chữ x có thể có
bất kỳ số lượng ký tự 'a', 'b'
và 'c' - trong bất kỳ tổ hợp nào.
Có thể không chỉ liệt kê các ký tự, mà còn tạo ra
các nhóm ký tự, bằng cách viết dấu gạch ngang giữa hai ký tự.
Ví dụ, như thế này: [a-d] -
chúng ta nhận được tất cả các ký tự từ 'a' đến
'd'.
Hãy xem xét các ví dụ.
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này:
giữa các chữ x là bất kỳ chữ cái nào từ 'a'
đến 'z':
let str = 'xax xbx xcx x@x';
let res = str.replace(/x[a-z]x/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'! ! ! x@x'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này:
giữa các chữ x là bất kỳ chữ cái nào từ 'a'
đến 'k':
let str = 'xax xbx xmx x@x';
let res = str.replace(/x[a-k]x/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'! ! xmx x@x'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này:
giữa các chữ x là bất kỳ chữ cái nào từ 'A'
đến 'Z':
let str = 'xax xBx xcx x@x';
let res = str.replace(/x[A-Z]x/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'xax ! xcx x@x'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này:
giữa các chữ x là bất kỳ chữ số nào từ 0 đến 9:
let str = 'xax x1x x3x x5x x@x';
let res = str.replace(/x[0-9]x/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'xax ! ! ! x@x'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này:
giữa các chữ x là bất kỳ chữ số nào từ 3 đến 7:
let str = 'xax x1x x3x x5x x@x';
let res = str.replace(/x[3-7]x/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'xax x1x ! ! x@x'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này:
giữa các chữ x là bất kỳ chữ cái nào từ 'a'
đến 'z' hoặc chữ số từ 1 đến 9:
let str = 'xax x1x x3x x5x x@x';
let res = str.replace(/x[a-z1-9]x/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'! ! ! ! x@x'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này:
giữa các chữ x là bất kỳ chữ cái nào từ 'a'
đến 'z' hoặc chữ cái từ 'A' đến
'Z':
let str = 'xax xBx xcx x5x x@x';
let res = str.replace(/x[a-zA-Z]x/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'! ! ! x5x x@x'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này:
giữa các chữ x là bất kỳ chữ cái nào từ 'a'
đến 'z' hoặc các chữ số 1, 2:
let str = 'xax xbx x1x x2x x3x';
let res = str.replace(/x[a-z12]x/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'! ! ! ! x3x'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này:
giữa các chữ x là các chữ cái từ 'a' đến 'z'
với số lượng từ 1 trở lên:
let str = 'xx xabesx xaadx x123x xa3x';
let res = str.replace(/x[a-z]+x/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'xx ! ! ! x123x xa3x'
Ví dụ
Hãy làm sao cho số lượng chữ cái có thể bằng không:
let str = 'xx xabesx xaadx x123x xa3x';
let res = str.replace(/x[a-z]*x/g, '!');
Kết quả, biến sẽ được ghi giá trị sau:
'! ! ! ! x123x xa3x'
Bài tập thực hành
Cho một chuỗi:
let str = 'aba aea aca aza axa';
Viết biểu thức chính quy tìm theo mẫu
sau: ở hai bên là chữ cái 'a',
và giữa chúng - chữ cái 'b',
'e' hoặc 'x'.
Cho một chuỗi:
let str = 'a1a a3a a7a a9a aba';
Viết biểu thức chính quy tìm theo mẫu
sau: ở hai bên là chữ cái 'a',
và giữa chúng - chữ số từ 3 đến 6.
Cho một chuỗi:
let str = 'aba aea afa aha aga';
Viết biểu thức chính quy tìm theo mẫu
sau: ở hai bên là chữ cái 'a',
và giữa chúng - chữ cái từ a đến g.
Cho một chuỗi:
let str = 'aba aea afa aha aga';
Viết biểu thức chính quy tìm theo mẫu
sau: ở hai bên là chữ cái 'a',
và giữa chúng - chữ cái từ a đến f và từ j đến z.
Cho một chuỗi:
let str = 'aAa aea aEa aJa a3a';
Viết biểu thức chính quy tìm theo mẫu
sau: ở hai bên là chữ cái 'a',
và giữa chúng - chữ cái từ a đến f và từ A đến D.
Cho một chuỗi:
let str = 'aAXa aeffa aGha aza ax23a a3sSa';
Viết biểu thức chính quy tìm theo mẫu
sau: ở hai bên là chữ cái 'a',
và giữa chúng - các chữ cái Latinh viết thường,
không ảnh hưởng đến các phần còn lại.
Cho một chuỗi:
let str = 'aAXa aeffa aGha aza ax23a a3sSa';
Viết biểu thức chính quy tìm theo mẫu
sau: ở hai bên là chữ cái 'a',
và giữa chúng - các chữ cái Latinh viết thường và viết hoa, không ảnh hưởng đến các phần còn lại.
Cho một chuỗi:
let str = 'aAXa aeffa aGha aza ax23a a3sSa';
Viết biểu thức chính quy tìm theo mẫu
sau: ở hai bên là chữ cái 'a',
và giữa chúng - các chữ cái Latinh viết thường
và chữ số, không ảnh hưởng đến các phần còn lại.