🦄 Regexp 🦄

Nhìn trước tiêu cực trong biểu thức chính quy Regular

Nhìn trước tiêu cực x(?!y) có rất nhiều cái hay. Chúng ta cũng bắt buộc phải hiểu nó.
js_masterRegular
Regular-Expression-trong-JavaScript.jpg

Chào các bạn

Trong bài viết này mình sẽ nói về nhìn trước tiêu cực x(?!y). Trong đó x hoặc y là ký tự hoặc chuỗi hoặc cái gì đó thì tùy bạn.

Nhìn trước tiêu cực

Nhìn trước tiêu cực x(?!y) rất đơn giản là mỗi lần chạy x sẽ nhìn về phía trước coi có khác y hay không thôi.

Cú pháp

Trận đấuMô tả
x(?!y)Nhìn trước tiêu cực. Mỗi lần chạy x nhìn về trước hỏi có phải khác y hay không
  • Trận đấu /[0-9]+(?!đ)/
1let str = "Tôi có 10 và 100đ còn bạn thì sao? 1 hay 30đ";
2
3let reg = /[0-9]+(?!đ)/;
4
5let ketQua = str.match(reg);
6
7console.log(ketQua); // ['10', index: 7, input: 'Tôi có 10 và 100đ còn bạn thì sao? 1 hay 30đ', groups: undefined]

Ý nghĩa của trận đấu /[0-9]+(?!đ)/ này là. Bắt đầu bất kỳ ký tự nào từ [0-9] tiếp theo là định lượng tham lam cộng + sẽ lấy tiếp nhiều số nhất có thể. Đến khi nào không phải là số [0-9] thì nhìn tiêu cực (?!đ) bắt đầu hỏi có phải là ký tự đ hay không. Nếu không có đ thì kết quả được trả về.

Nó cũng không có gì khó đúng không các bạn. Nói vậy thôi chứ lúc mới học mình cũng đâu biết gì về nó. Nhưng rồi lâu ngày kiên trì từng năm nên mình mới nhớ mới hiểu thôi.

Nếu chúng ta muốn lấy kết quả của toàn bộ thì chúng ta thêm cờ g cho nó.

  • Trận đấu /[0-9]+(?!đ)/g
1let str = "Tôi có 10 và 100đ còn bạn thì sao? 1 hay 30đ";
2
3let reg = /[0-9]+(?!đ)/g;
4
5let ketQua = str.match(reg);
6
7console.log(ketQua); // ['10', '10', '1', '3']

Đến đây thì các bạn thắt mắt tại sao lại có số 10 và số 3 trong mảng kết quả đó. Mình cũng giải thích cho bạn hiểu luôn. Chả có gì khó cả đâu.

1// 100đ
2// [0-9]+(?!đ)
3// [0-9]+ => 1
4// 1[0-9]+ => 10
5// 10[0-9]+ => 100
6// 100[0-9]+ => 100đ
7// Đến đây thì định lượng + không chạy tiếp nữa. Mà bắt đầu đi lùi lại
8// 100đ
9// 100đ(?!đ) => 100 Vì đ = đ nên nhìn tiêu cực chúng ta không đúng. Nó lại lùi lại 1 bước nữa.
10// 100(?!đ) => 10   Bây gờ nó so 0 với đ khác nhau nên 10 được trả lại.

Nó cứ như vậy tương tự với số 3. Nhìn chung cách giải thích của mình cũng hơi khó hiểu thật. Các bạn chịu khó ngẫm tí cũng được.

Vì nhìn trước tiêu cực này cũng không có gì khó nên mình chỉ làm ví dụ vậy thôi.

Tổng kết

Trong bài viết này mình đã hướng dẫn cách mà nhìn trước tiêu cực x(?!y) hoạt động.

Các bạn chỉ cần nhớ cú pháp nó là ok rồi. Học các này cũng như làm nhà vậy. Cũng xây móng cũng lắp ghép từ từ vậy đó.

  • nhìn trước
  • nhìn sau
  • string
  • regular
  • regexp
  • object

OFFJS.COM - Blog học tập giải trí - 🐲

Chia sẻ nhiều kiến thức thú vị trong lập trình cũng như cuộc sống.

Giới thiệu


Trang web này mình sẽ nói về kiến thức lập trình và cuộc sống mà các bạn mới học hay đang dự định học. Có một bước đi đầu đời vững chắc.

Hồ Quang Trí.jpg

Đi kèm với đó là những lý thuyết và các dòng code minh họa. Để các bạn dễ hình dung.

Đơn nhiên cũng không dễ dàng ngày một ngày hai mà học hết được.

Học Tập Là Một Con Đường Dài Vô Tận

Nó sẽ nuốt các bạn vô số thời gian nhưng bù lại khi đã biết thì mọi thứ thật là tuyệt.

1console.log("Hồ Quang Trí");

Nếu có ai nói bạn học lập trình trong vòng 3 đến 6 tháng thì mình xin nói thật không bao giờ có chuyện đó nhé.

Chúc các bạn thành công.

Chân trang

phone-toan-phat.png

0353210168

address-toan-phat.png

Việt Nam