RegExp.prototype.dotAll
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.
Thuộc tính accessor dotAll của các instance RegExp trả về liệu cờ s có được sử dụng với biểu thức chính quy này hay không.
Try it
const regex1 = /f.o/s;
console.log(regex1.dotAll);
// Expected output: true
const regex2 = /bar/;
console.log(regex2.dotAll);
// Expected output: false
Mô tả
RegExp.prototype.dotAll có giá trị true nếu cờ s được sử dụng; ngược lại là false. Cờ s cho biết rằng ký tự đặc biệt dấu chấm (.) cũng nên khớp với các ký tự kết thúc dòng ("newline") sau đây trong một chuỗi, mà nó thường không khớp:
- U+000A LINE FEED (LF) (
\n) - U+000D CARRIAGE RETURN (CR) (
\r) - U+2028 LINE SEPARATOR
- U+2029 PARAGRAPH SEPARATOR
Điều này thực sự có nghĩa là dấu chấm sẽ khớp với bất kỳ đơn vị mã UTF-16 nào. Tuy nhiên, nó sẽ không khớp với các ký tự nằm ngoài Mặt phẳng Đa ngôn ngữ Cơ bản Unicode (BMP), còn được gọi là ký tự astral, được biểu diễn dưới dạng cặp đại diện và cần khớp với hai mẫu . thay vì một.
"😄".match(/(.)(.)/s);
// Array(3) [ "😄", "\ud83d", "\ude04" ]
Cờ u (unicode) có thể được dùng để cho phép dấu chấm khớp với các ký tự astral như một ký tự đơn.
"😄".match(/./su);
// Array [ "😄" ]
Lưu ý rằng một mẫu như .* vẫn có khả năng tiêu thụ các ký tự astral như một phần của ngữ cảnh lớn hơn, ngay cả khi không có cờ u.
"😄".match(/.*/s);
// Array [ "😄" ]
Sử dụng cả cờ s và u cùng nhau cho phép dấu chấm khớp với bất kỳ ký tự Unicode nào theo cách trực quan hơn.
Accessor set của dotAll là undefined. Bạn không thể thay đổi thuộc tính này trực tiếp.
Ví dụ
>Sử dụng dotAll
const str1 = "bar\nexample foo example";
const regex1 = /bar.example/s;
console.log(regex1.dotAll); // true
console.log(str1.replace(regex1, "")); // foo example
const str2 = "bar\nexample foo example";
const regex2 = /bar.example/;
console.log(regex2.dotAll); // false
console.log(str2.replace(regex2, ""));
// bar
// example foo example
Đặc tả kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-get-regexp.prototype.dotAll> |