Biên giới trong biểu thức chính quy regular
Chào các bạn
Trong bài viết này mình sẽ nói về biên giới trong biểu thức chính quy Regexp
Biên giới
Biên giới \b trong biểu thức chính quy Regexp cũng rất quan trọng. Các bạn cũng bắt buộc phải nhớ để thao tác với chuỗi một cách thuận tiện nhất
Cú pháp
1let str = "Hồ Quang Trí" 2 3let reg = /\b\w+\b/
Vị trí để xác định ranh giới của một từ.
- Bắt đầu bằng \w
- Giửa 2 ký tự trong từ một là \w một khác \W
Cũng khó định nghĩa về cái này quá. Các bạn thông cảm.
1let str = "Hồ Quang Trí" 2 3let reg = /\b\w+\b/ 4 5let ketQua = str.match(reg); 6 7console.log(ketQua); // ['H', index: 0, input: 'Hồ Quang Trí', groups: undefined]
Ý nghĩa của trận đấu /\b\w+\b/ này là. Bắt đầu bằng biên giới \b tiếp theo là lớp ký tự \w tương đương [a-z0-9-A-Z_] tiếp đến là định lượng tham lam + tiếp theo là biên giới \b
Nếu các bạn chưa hiểu về ý nghĩa của các lớp đó thì nên xem lại các bài trước nhé.
Như các bạn có thể thấy. Đầu ra của chúng ta là một mảng các kết quả. Hành vi này do phương pháp match gây ra. Nếu các bạn cũng chưa biết thì cũng nên xem lại các bài hướng dẫn trước của mình.
Lưu Ý: Các bạn nhìn thấy đầu ra của chúng ta ngay vị trí thứ 0 là H chứ không phải là Hồ. Đơn giản là vì ồ không thuộc lớp \w
Nếu có bài tập nào đó thầy giáo bắt bạn đếm các từ trong chuỗi thì sẻ sai nhé. Khái niệm biên giới \b nó khác rất là nhiều chứ không phải là đếm từ theo khoảng trắng \s đâu nhé. Nên các bạn cẩn thận.
Chúng ta nên đổi lại ví dụ một chút. Bây giờ chúng ta chỉ cần dùng lớp \w thôi.
1let str = "Ho! Quang1 @Tri -Demo#"; 2 3let reg = /\b\w+\b/g 4 5let ketQua = str.match(reg); 6 7console.log(ketQua); // ['Ho', 'Quang1', 'Tri', 'Demo']
Như các bạn có thể thấy đầu ra chúng ta bây giờ là một mảng kết quả. Hành vi này là do cờ g gây ra. Đơn nhiên là cũng tùy phương pháp các bạn áp dụng. Nếu dùng phương pháp matchAll thì kết quả đầu ra sẻ khác.
1let str = "Ho! Quang1 @Tri -Demo#"; 2 3let reg = /\b\w+\b/g 4 5let ketQua = str.matchAll(reg); 6 7for (let v of ketQua) { 8 console.log(v); 9 10 // ['Ho', index: 0, input: 'Ho! Quang1 @Tri -Demo#', groups: undefined] 11 // ['Quang1', index: 4, input: 'Ho! Quang1 @Tri -Demo#', groups: undefined] 12 // ['Tri', index: 12, input: 'Ho! Quang1 @Tri -Demo#', groups: undefined] 13 // ['Demo', index: 17, input: 'Ho! Quang1 @Tri -Demo#', groups: undefined] 14}
Đơn nhiên là mình có thể dùng nhiều phương pháp khác nếu thích. Tùy thuộc vào bài toán mình áp dụng.
Tổng kết
Cuối cùng mình chỉ cần các bạn nhớ biên giới là \b vậy là đủ rồi. Còn áp dụng vào thực tế thì chỉ cần tùy vào bài toán thôi. Chứ mình ít sài lắm. Nhưng với mình thì mình nhớ, vì học lâu với nhiều rồi.
[OK] từ từ rồi sẽ đi lên thôi.
- biên giới
- string
- chuỗi
- object
Các bài viết liên quan
Phạm vi ngoặc vuông trong biểu thức chính quy Regexp
Phạm vi [] trong regexp rất quan trọng. Nó có rất rất là nhiều ý nghĩa.RegularCác phương pháp và tài sản của lớp String
Chúng ta cùng tìm hiểu qua các phương pháp và tài sản của lớp String nhé.JavascriptCác phương pháp tỉnh Object.keys values entries
Cùng nhau tìm hiểu về các phương pháp tỉnh Object.keys() Object.values() Object.entries()Javascript