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.

Die dotAll Zugriffsoroperty von RegExp Instanzen gibt zurück, ob das s-Flag mit diesem regulären Ausdruck verwendet wird oder nicht.

Probieren Sie es aus

const regex1 = /f.o/s;

console.log(regex1.dotAll);
// Expected output: true

const regex2 = /bar/;

console.log(regex2.dotAll);
// Expected output: false

Beschreibung

RegExp.prototype.dotAll hat den Wert true, wenn das s-Flag verwendet wurde; ansonsten false. Das s-Flag gibt an, dass das spezielle Zeichen Punkt (.) zusätzlich die folgenden Zeilenabschlusszeichen ("Newline") in einem String übereinstimmen soll, die es ansonsten nicht übereinstimmen würde:

  • U+000A LINE FEED (LF) (\n)
  • U+000D CARRIAGE RETURN (CR) (\r)
  • U+2028 LINE SEPARATOR
  • U+2029 PARAGRAPH SEPARATOR

Das bedeutet effektiv, dass der Punkt jede UTF-16-Codeeinheit übereinstimmen wird. Es wird jedoch nicht mit Zeichen übereinstimmen, die außerhalb der Unicode Basic Multilingual Plane (BMP) liegen, auch bekannt als astrale Zeichen, die als Surrogatpaare dargestellt werden, und erfordert das Übereinstimmen mit zwei . Mustern statt einem.

js
"😄".match(/(.)(.)/s);
// Array(3) [ "😄", "\ud83d", "\ude04" ]

Das u (unicode) Flag kann verwendet werden, um dem Punkt zu ermöglichen, astrale Zeichen als einzelnes Zeichen zu übereinstimmen.

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

Beachten Sie, dass ein Muster wie .* immer noch in der Lage ist, astrale Zeichen als Teil eines größeren Kontextes zu konsumieren, auch ohne das u-Flag.

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

Die gleichzeitige Verwendung von s und u Flags ermöglicht es dem Punkt, jedes Unicode-Zeichen auf eine intuitivere Weise zu übereinstimmen.

Der Set-Zugriffsoroperty von dotAll ist undefined. Sie können diese Eigenschaft nicht direkt ändern.

Beispiele

Verwendung von 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

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-get-regexp.prototype.dotAll

Browser-Kompatibilität

Siehe auch