Tham chiếu ngược trong mẫu: \ N và \ k <name>


// lỗi tham chiếu
var str = `He said: "She's the one!".`;

var regexp = /['"](.*?)['"]/g;  // 

// The result is not what we'd like to have
alert( str.match(regexp) ); // "She'  //lỗi ở (.*?) nên kết quả không chính xác nếu ban đầu là nháy kép

// gói lại nhóm cần tham chiếu ['"] => (['"])


// ==>  (['"])(.*?)\1

// hoạt động
var str = `He said: "She's the one!".`;

var regexp = /(['"])(.*?)\1/g;

alert( str.match(regexp) ); // "She's the one!"

Để tham chiếu một nhóm đã đặt tên, chúng ta có thể sử dụng \k<name>.

Trong ví dụ bên dưới, nhóm có dấu ngoặc kép được đặt tên ?<quote>, vì vậy tham chiếu ngược là \k<quote>:

let str = `He said: "She's the one!".`;

let regexp = /(?<quote>['"])(.*?)\k<quote>/g;

alert( str.match(regexp) ); // "She's the one!"