RegExp.prototype.hasIndices
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.
Thuộc tính accessor hasIndices của các instance RegExp trả về liệu cờ d có được sử dụng với biểu thức chính quy này hay không.
Try it
const regex1 = /foo/d;
console.log(regex1.hasIndices);
// Expected output: true
const regex2 = /bar/;
console.log(regex2.hasIndices);
// Expected output: false
Mô tả
RegExp.prototype.hasIndices có giá trị true nếu cờ d được sử dụng; ngược lại là false. Cờ d chỉ ra rằng kết quả của một kết quả khớp biểu thức chính quy nên chứa các chỉ mục bắt đầu và kết thúc của các chuỗi con của mỗi nhóm bắt. Nó không thay đổi cách diễn giải hoặc hành vi khớp của regex theo bất kỳ cách nào, mà chỉ cung cấp thông tin bổ sung trong kết quả khớp.
Cờ này chủ yếu ảnh hưởng đến giá trị trả về của exec(). Nếu cờ d có mặt, mảng được trả về bởi exec() có thuộc tính indices bổ sung như được mô tả trong giá trị trả về của phương thức exec(). Vì tất cả các phương thức liên quan đến regex khác (như String.prototype.match()) gọi exec() nội bộ, chúng cũng sẽ trả về các chỉ mục nếu regex có cờ d.
Accessor set của hasIndices là undefined. Bạn không thể thay đổi thuộc tính này trực tiếp.
Ví dụ
Có một ví dụ sử dụng chi tiết hơn tại Nhóm và tham chiếu ngược > Sử dụng nhóm và chỉ mục kết quả khớp.
Sử dụng hasIndices
const str1 = "foo bar foo";
const regex1 = /foo/dg;
console.log(regex1.hasIndices); // true
console.log(regex1.exec(str1).indices[0]); // [0, 3]
console.log(regex1.exec(str1).indices[0]); // [8, 11]
const str2 = "foo bar foo";
const regex2 = /foo/;
console.log(regex2.hasIndices); // false
console.log(regex2.exec(str2).indices); // undefined
Đặc tả kỹ thuật
| Thông số kỹ thuật |
|---|
| ECMAScript® 2027 Language Specification> # sec-get-regexp.prototype.hasIndices> |