RegExp.prototype.unicode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.

Thuộc tính accessor unicode của các instance RegExp trả về liệu cờ u có được sử dụng với biểu thức chính quy này hay không.

Try it

const regex1 = /\u{61}/;
const regex2 = /\u{61}/u;

console.log(regex1.unicode);
// Expected output: false

console.log(regex2.unicode);
// Expected output: true

Mô tả

RegExp.prototype.unicode có giá trị true nếu cờ u được sử dụng; ngược lại là false. Cờ u bật các tính năng liên quan đến Unicode. Với cờ "u":

  • Bất kỳ escape điểm mã Unicode nào (\u{xxxx}, \p{UnicodePropertyValue}) sẽ được diễn giải như vậy thay vì là escape nhận dạng. Ví dụ: /\u{61}/u khớp với "a", nhưng /\u{61}/ (không có cờ u) khớp với "u".repeat(61), trong đó \u tương đương với một u đơn lẻ.
  • Các cặp đại diện sẽ được diễn giải là các ký tự nguyên vẹn thay vì hai ký tự riêng biệt. Ví dụ: /[😄]/u chỉ khớp với "😄" chứ không phải "\ud83d".
  • Khi lastIndex được tự động tăng (chẳng hạn khi gọi exec()), regex unicode tăng theo điểm mã Unicode thay vì đơn vị mã UTF-16.

Có những thay đổi khác đối với hành vi phân tích cú pháp ngăn ngừa các lỗi cú pháp có thể xảy ra (tương tự như strict mode cho cú pháp regex). Các cú pháp này đều bị phản đối và chỉ được giữ lại để tương thích web, và bạn không nên dựa vào chúng.

Accessor set của unicodeundefined. Bạn không thể thay đổi thuộc tính này trực tiếp.

Chế độ nhận biết Unicode

Khi chúng ta đề cập đến chế độ nhận biết Unicode, chúng ta có nghĩa là regex có cờ u hoặc cờ v, trong trường hợp đó regex bật các tính năng liên quan đến Unicode (chẳng hạn như escape lớp ký tự Unicode) và có các quy tắc cú pháp nghiêm ngặt hơn. Vì uv diễn giải cùng một regex theo những cách không tương thích, sử dụng cả hai cờ dẫn đến SyntaxError.

Tương tự, một regex là không nhận biết Unicode nếu nó không có cờ u hay v. Trong trường hợp này, regex được diễn giải như một chuỗi các đơn vị mã UTF-16, và có nhiều cú pháp cũ không trở thành lỗi cú pháp.

Ví dụ

Sử dụng thuộc tính unicode

js
const regex = /\u{61}/u;

console.log(regex.unicode); // true

Đặc tả kỹ thuật

Specification
ECMAScript® 2027 Language Specification
# sec-get-regexp.prototype.unicode

Tương thích trình duyệt

Xem thêm