Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

RegExp.prototype.dotAll

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2020 browserübergreifend verfügbar.

Die dotAll-Accessor-Eigenschaft von RegExp-Instanzen gibt an, ob bei diesem regulären Ausdruck das s-Flag verwendet wird.

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, andernfalls false. Das s-Flag bewirkt, dass das Sonderzeichen Punkt (.) zusätzlich mit den folgenden Zeilenumbruchzeichen („newlines“) in einer Zeichenfolge übereinstimmt, mit denen es andernfalls 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, dass der Punkt mit jeder UTF-16-Codeeinheit übereinstimmt. Er stimmt jedoch nicht mit Zeichen außerhalb der Unicode Basic Multilingual Plane (BMP) überein, die auch als astrale Zeichen bezeichnet werden. Diese werden als Surrogatpaare dargestellt und erfordern für eine Übereinstimmung zwei .-Muster statt eines.

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

Mit dem u-Flag (Unicode) kann der Punkt mit astralen Zeichen als jeweils einem einzelnen Zeichen übereinstimmen.

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

Beachten Sie, dass ein Muster wie .* astrale Zeichen auch ohne das u-Flag als Teil eines größeren Zusammenhangs erfassen kann.

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

Wenn das s- und das u-Flag zusammen verwendet werden, kann der Punkt auf intuitivere Weise mit jedem Unicode-Zeichen übereinstimmen.

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

Beispiele

dotAll verwenden

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

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

Browser-Kompatibilität

Siehe auch