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