⊗jsSpREGL 101 of 294 menu

Giới hạn tính tham lam trong biểu thức chính quy JavaScript

Biểu thức chính quy mặc định là tham lam. Điều này có nghĩa là chúng sẽ bắt số lượng ký tự tối đa có thể. Hãy cùng phân tích qua một ví dụ. Giả sử chúng ta có một chuỗi như sau:

let str = 'aeeex zzz x kkk';

Giả sử chúng ta muốn tìm chuỗi con 'aeeex' trong chuỗi này theo mẫu sau: chữ cái 'a', sau đó bất kỳ ký tự nào một hoặc nhiều lần, sau đó là chữ cái 'x'.

let res = str.replace(/a.+x/g, '!');

Chúng ta dự đoán rằng kết quả ghi vào biến sẽ là chuỗi '! zzz x kkk'. Tuy nhiên, điều này không đúng - biến nhận được chuỗi '! kkk'.

Vấn đề nằm ở chỗ biểu thức chính quy của chúng ta tìm tất cả các ký tự từ chữ cái 'a' đến chữ cái 'x'. Nhưng trong chuỗi của chúng ta có hai chữ cái 'x'! Do tính tham lam, kết quả là biểu thức chính quy tìm đến chữ 'x' cuối cùng, do đó bắt không đúng phần chúng ta mong đợi.

Tất nhiên, thường thì hành vi này là điều chúng ta cần. Nhưng cụ thể trong trường hợp này, chúng ta muốn tắt tính tham lam và nói với biểu thức chính quy hãy tìm đến chữ 'x' đầu tiên.

Để giới hạn tính tham lam, cần đặt dấu hỏi sau toán tử lặp:

let res = str.replace(/a.+?x/g, '!');

Có thể giới hạn tính tham lam cho tất cả các toán tử lặp: cả *, ?, và {} - như sau: *?, ??{}?.

Cho chuỗi:

let str = 'aba accca azzza wwwwa';

Viết biểu thức chính quy tìm tất cả các chuỗi được bao quanh bởi chữ cái 'a', và thay thế mỗi chuỗi đó bằng '!'. Giữa các chữ cái 'a' có thể là bất kỳ ký tự nào (ngoại trừ 'a').

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối