Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Có tương đương negative lookbehind trong JavaScript không?

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ũ.