Phạm vi (Quantifiers ) => {}
4 đại lượng phạm vi cơ bản cần ghi nhớ:
* + ? {n} ==> 0, 1, 0-1, from
Số lượng {n} thay n bằng số tự nhiên chính xác
\d{5} biểu thị chính xác 5 chữ số, giống như \d\d\d\d\d.
alert( "I'm 12345 years old".match(/\d{5}/) ); // "12345"
Phạm vi {3,5} có nghĩa là điều kiện từ 3 đến 5
alert( "I'm not 12, but 1234 years old".match(/\d{3,5}/) ); // "1234"
\d{3,} ==> Yêu cầu digit number từ 3 ký tự trở lên:
alert( "I'm not 12, but 345678 years old".match(/\d{3,}/) ); // "345678"
Ví dụ với \d{1,}
let str = "+84(903)-123-45-67";
let numbers = str.match(/\d{1,}/g);
console.log(numbers); // (5) ['84', '903', '123', '45', '67']
Shorthands ( cách viết ngắn hơn)
Đại lượng + tương đương với {1,}
với biểu thức \d{1,} <==> \d+
let str = "+84(903)-123-45-67";
console.log( str.match(/\d+/g) ); // (5) ['84', '903', '123', '45', '67']
Đại lượng ? tương đương với {0,1}
let str = "Should I write color or colour?";
console.log( str.match(/colou?r/g) ); // color, colour // chữ u sẽ xuất hiện 0 hoặc 1 lần
Đại lượng * tương dương {0,}
Ví dụ: \d0* tìm kiếm một chữ số theo sau bởi bất kỳ số 0 nào (có thể nhiều hoặc không có):
console.log( "100 10 1".match(/\d0*/g) ); //(3) ['100', '10', '1']
CÁC VÍ DỤ KHÁC:
// 1. lấy số thập phân
console.log( "0 1 12.345 7890".match(/\d+\.\d+/g) ); // ['12.345']
// 2. lấy body
console.log( "<body> ... </body>".match(/<[a-z]+>/gi) ); // ['<body>']
// 3. lấy thẻ h1
console.log( "<h1>Hi!</h1>".match(/<[a-z][a-z0-9]*>/gi) ); // ['<h1>']
// 4. lấy cặp thẻ h1
console.log( "<h1>Hi!</h1>".match(/<\/?[a-z]\d>/gi) ); //(2) ['<h1>', '</h1>']
// 5. cặp thẻ body
console.log( "<body>body!</body>".match(/<\/?[a-z0-9]+>/gi) ); //(2) ['<body>', '</body>']
// 6.lấy dấu chấm
let regexp = /\.{3,}/g;
console.log( "Hello!... How goes?.....".match(regexp) ); // ['...', '.....']
// 7.lấy màu sắc
let regexp2 = /#[a-f0-9]{6}/gi;
let str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2"
console.log( str.match(regexp2) ); // (2) ['#121212', '#AA00ef']
// 8.lấy màu sắc chuỗi dài hơn - cần khắc phục
alert( "#12345678".match( /#[a-f0-9]{6}/gi ) ) // #123456
// 9. khắc phục bằng cách thêm biên vào \b
// color
alert( "#123456".match( /#[a-f0-9]{6}\b/gi ) ); // #123456
// not a color
alert( "#12345678".match( /#[a-f0-9]{6}\b/gi ) ); // null