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.

js
"😄".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.

js
"😄".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.

js
"😄".match(/.*/s);
// Array [ "😄" ]

Sử dụng cả cờ su 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 dotAllundefined. Bạn không thể thay đổi thuộc tính này trực tiếp.

Ví dụ

Sử dụng dotAll

js
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

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

Xem thêm