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 2015.

Die dotAll Zugriffseigenschaft 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 = new RegExp("foo", "s");

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

const regex2 = new RegExp("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 gibt an, dass das spezielle Zeichen Punkt (.) zusätzlich zu den folgenden Zeilentrennzeichen ("newline")-Zeichen in einem String passen soll, die es sonst nicht passen 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 trifft. Es wird jedoch keine Zeichen treffen, die sich außerhalb der Unicode Basic Multilingual Plane (BMP) befinden, auch bekannt als astrale Zeichen, die durch Surrogatpaare dargestellt werden. Zum Treffen dieser Zeichen sind stattdessen zwei .-Muster erforderlich, nicht eines.

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

Das u-Flag (unicode) kann verwendet werden, um zu erlauben, dass der Punkt astrale Zeichen als ein einzelnes Zeichen trifft.

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

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

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

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

Der Set-Accessor 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® 2025 Language Specification
# sec-get-regexp.prototype.dotAll

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
dotAll

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch