Giờ đây, Javascript đã có giao diện (kể từ ES2018 ), trên các môi trường mới hơn, bạn có thể tránh các nhóm hoàn toàn trong các tình huống như thế này. Thay vào đó, lookbehind cho những gì đứng trước nhóm bạn đã chụp, và lookahead cho đến sau, và thay thế bằng chỉ !NEW_ID!
:
const str = 'name="some_text_0_some_text"';
console.log(
str.replace(/(?<=name="\w+)\d+(?=\w+")/, '!NEW_ID!')
);
Với phương pháp này, trận đấu đầy đủ chỉ là phần cần được thay thế.
(?<=name="\w+)
- Lookbehind cho name"
, theo sau là các ký tự từ (may mắn thay, lookbehind không phải là chiều rộng cố định trong Javascript!)
\d+
- Ghép một hoặc nhiều chữ số - phần duy nhất của mẫu không nằm trong diện mạo, phần duy nhất của chuỗi sẽ nằm trong kết quả khớp
(?=\w+")
- Nhìn cho các ký tự từ theo sau bởi "
`
Hãy nhớ rằng lookbehind là khá mới. Nó hoạt động trong các phiên bản hiện đại của V8 (bao gồm Chrome, Opera và Node), nhưng không phải trong hầu hết các môi trường khác , ít nhất là chưa. Vì vậy, trong khi bạn có thể sử dụng lookbehind một cách đáng tin cậy trong Node và trong trình duyệt của riêng bạn (nếu nó chạy trên phiên bản V8 hiện đại), thì nó vẫn chưa được hỗ trợ đầy đủ bởi các máy khách ngẫu nhiên (như trên trang web công cộng).