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}/ukhớp với"a", nhưng/\u{61}/(không có cờu) khớp với"u".repeat(61), trong đó\utương đương với mộtuđơ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ụ:
/[😄]/uchỉ khớp với"😄"chứ không phải"\ud83d". - Khi
lastIndexđược tự động tăng (chẳng hạn khi gọiexec()), 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 unicode là undefined. 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ì u và v 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
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> |