JS Regular Expression

22/08/2019

Bài sau » « Bài trước

Regular Expression là gì ?

- Regular Expression là một chuỗi các ký tự tạo thành một mẫu tìm kiếm (search pattern).

- Regular Expression có thể là 1 k tự đơn, hoặc 1 cấu trúc phức tạp.

- Regular Expression thường được dùng để tìm kiếm hoặc thay thế văn bản.

- Trong Javascript, Regular Expression thường được dùng với các phương thức của String như: search()replace().

Cú pháp của Regular Expression

/pattern/modifiers;

Ví dụ:

var patt = /frontend/i;

Giải thích ví dụ và cú pháp bên trên:

- pattern là chữ frontend nằm trong cặp dấu gạch nghiêng //. Là đoạn văn bản cần tìm kiếm.

- modifiers là chữ i (kết quả tìm kiếm không phân biệt chữ hoa, chữ thường ). Là điều kiện bổ sung cho tìm kiếm.

Sử dụng với phương thức search()

Phương thức search() tìm kiếm một chuỗi cho một giá trị được chỉ định và trả về vị trí khớp đầu tiên.

Ví dụ: tìm kiếm bình thường với search():

var str = "I'm frontend dev."; var n = str.search("frontend"); // Kết quả trả về n là 4

Ví dụ tìm kiếm với Regular Expression, trường hợp chuỗi tìm kiếm có chữ in HOA.

var str = "I'm frontend dev."; var n = str.search(/Frontend/i); // Kết quả trả về n vẫn là 4. Sử dụng modifier i để bỏ qua chữ hoa, chữ thường.

Sử dụng với phương thức replace()

Phương thức replace() dùng thể thay thế chuỗi thành chuỗi khác.

Ví dụ: thay thế bình thường với replace():

var str = "I'm frontend dev."; var n = str.replace("frontend","backend"); // Kết quả trả về n là : I'm backend dev.

Ví dụ thay thế với Regular Expression, trường hợp chuỗi tìm kiếm có chữ in HOA.

var str = "I'm frontend dev."; var n = str.replace(/Frontend/i,"Backend"); // Kết quả trả về n là : I'm backend dev. Sử dụng modifier i để bỏ qua chữ hoa, chữ thường.

Modifiers trong Regular Expression

- i : Tìm kiếm không phân biệt chữ hoa, chữ thường

- g : Tìm kiếm tất cả các kết quả

- m : Tìm kiếm trên nhiều dòng.

Pattern trong Regular Expression

- Quy tắc dấu ngoặc [ ] : Tìm kiếm các kí tự trong ngoặc. Ví dụ: [abc] : Tìm kiếm a hoặc b hoặc c. Ví dụ: [a-z] : Tìm kiếm các kí tự từ a đến z. Ví dụ: [0-9] tìm kiếm các số từ 0 đến 9.

var str = "Frontend 100%"; var n = str.replace(/[f]/i,"B"); // Kết quả trả về n là : Brontend var n2 = str.replace(/[a-z]/i,"Backend"); // Kết quả trả về n2 là : Backend 100% var n3 = str.replace(/[0-9]/i,"x"); // Kết quả trả về n3 là : Frontend xxx%

- Quy tắc dấu ngoặc ( ) : Tìm kiếm các kí tự ngăn cách bởi dấu |. Ví dụ: (ab|cd) Tìm kiếm ab hoặc cd

var str = "Frontend 100%"; var n = str.replace(/(Fr|fa)/i,"B"); // Kết quả trả về n là : Bontend

- Dùng kí hiệu \d: Tìm kiếm số

var str = "Frontend 100%"; var n = str.replace(/\d/g,"B"); // Kết quả trả về n là : Frontend BBB%

- Dùng kí hiệu \s: Tìm kiếm khoảng trắng

var str = "Frontend 100%"; var n = str.replace(/\s/g,"B"); // Kết quả trả về n là : FrontendB100%

- Dùng kí hiệu \b: Tìm kiếm bắt đầu bằng \bABC hoặc kết thúc bằng ABC\b

var str = "Hello, look at."; var n = str.replace(/\blo/g,"B"); // Tìm kiếm bắt đầu bằng "lo" // Kết quả trả về n là : Hello, Bok at. var n2 = str.replace(/lo\b/g,"B"); // Tìm kiếm kết thúc bằng "lo" // Kết quả trả về n là : HelB, look at.

- Dùng kí hiệu \uxxxx: Tìm kiếm theo mã HEX của Unicode

var str = "Hello World."; var n = str.replace(/\u0057/g,"B"); // Mã HEX 0057 là của chữ W // Kết quả trả về n là : Hello Borld.

Quy tắc về số lượng:

- Dùng kí hiệu n+: Tìm kiếm chuỗi có chứa ít nhất 1 kí tự n

var str = "Helloo, who is there ?"; var n = str.replace(/o+/gi,"B"); // Tìm chuỗi có ít nhất 1 chữ o thì thay bằng B // Kết quả trả về n là : HellB, whB is there ?

- Dùng kí hiệu n*: Tìm kiếm chuỗi chứa 0 hoặc nhiều lần n

var str = "Helloo, who is there ?"; var n = str.replace(/lo*/gi,"B"); // Tìm chuỗi có "l", theo sau là 0 hoặc nhiều lần "o" // Kết quả trả về n là : HeBB, who is there ?

- Dùng kí hiệu n?: Tìm kiếm chuỗi chứa 0 hoặc 1 lần n

var str = "1, 100 or 1000?"; var n = str.replace(/10?/gi,"B"); // Tìm chuỗi có "1", theo sau là 0 hoặc 1 lần "0" // Kết quả trả về n là : B, B0 or B00

Sử dụng phương thức test()

Phương thức test() tìm kiếm một chuỗi cho một mẫu và trả về giá trị true hoặc false, tùy thuộc vào kết quả.

Ví dụ tìm kiếm chuỗi "in" trong câu sau:

var patt = /in/; patt.test("The best things in life are free!"); // Hoặc có thể viết ngắn gọn: /in/.test("The best things in life are free!"); // Kết quả trả về là true

Sử dụng phương thức exec()

Phương thức exec() tìm kiếm một chuỗi cho một mẫu và trả về văn bản tìm thấy dưới dạng một đối tượng (object).

Nếu không tìm thấy kết quả, nó sẽ trả về một object rỗng (null ).

Ví dụ tìm kiếm chuỗi "in" trong câu sau:

var obj = /in/.exec("The best things in life are free!"); console.log(obj); // Ta có thể in các thuộc tính trong object ra. // Kết quả console của obj là: ["in", index: 11, input: "The best things in life are free!", groups: undefined]

Bài sau » « Bài trước
Back to top