JavaScript (ES2018+) đã hỗ trợ lookbehind (cả positive và negative) trong Regular Expression. Trước ES2018, cần workaround.
Hiện tại (ES2018+): Hỗ trợ gốc
// Negative lookbehind: không tiền tố là dấu ngoặc kép /(?Ví dụ: Thay thế dấu ngoặc kép không bị escape
const str = 'He said "Hello" and she said \\"Hi\\"'; const result = str.replace(/(?Workaround cho môi trường cũ (pre-ES2018)
Dùng capture group và replace function:
// Pattern: (^|[^\\])" -> group 1 là ký tự trước (hoặc đầu chuỗi) str.replace(/(^|[^\\])"/g, "$1'")Giải thích:
(^|[^\\])match đầu chuỗi HOẶC ký tự không phải backslash, capture vào group 1. Replace giữ group 1 ($1) + thay"bằng'.Hỗ trợ trình duyệt Lookbehind
- Chrome 62+, Firefox 78+, Safari 16.4+, Edge 79+
- Node.js 8.10+ (có flag), 9.11+ (mặc định)
- Transpile với Babel (
@babel/plugin-proposal-regexp-lookbehind) cho môi trường cũ.