String.prototype.isWellFormed()

Baseline 2023
Newly available

Since October 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Die isWellFormed()-Methode von String-Werten gibt einen booleschen Wert zurück, der angibt, ob dieser String lone surrogates enthält oder nicht.

Syntax

js
isWellFormed()

Parameter

Keine.

Rückgabewert

Gibt true zurück, wenn dieser String keine lone surrogates enthält, andernfalls false.

Beschreibung

Strings in JavaScript sind UTF-16-codiert. Die UTF-16-Codierung hat das Konzept der surrogate pairs, welches im Abschnitt UTF-16-Zeichen, Unicode-Codepunkte und Graphemcluster ausführlich erläutert wird.

isWellFormed() erlaubt es Ihnen zu überprüfen, ob ein String wohlgeformt ist (d.h. keine lone surrogates enthält). Im Vergleich zu einer benutzerdefinierten Implementierung ist isWellFormed() effizienter, da Engines direkt auf die interne Darstellung von Strings zugreifen können. Wenn Sie einen String in einen wohlgeformten String umwandeln müssen, verwenden Sie die Methode toWellFormed(). isWellFormed() ermöglicht es Ihnen, schlecht geformte Strings anders zu behandeln als wohlgeformte, z.B. durch Auslösen eines Fehlers oder Markieren als ungültig.

Beispiele

Verwendung von isWellFormed()

js
const strings = [
  // Lone leading surrogate
  "ab\uD800",
  "ab\uD800c",
  // Lone trailing surrogate
  "\uDFFFab",
  "c\uDFFFab",
  // Well-formed
  "abc",
  "ab\uD83D\uDE04c",
];

for (const str of strings) {
  console.log(str.isWellFormed());
}
// Logs:
// false
// false
// false
// false
// true
// true

Vermeidung von Fehlern in encodeURI()

encodeURI löst einen Fehler aus, wenn der übergebene String nicht wohlgeformt ist. Dies kann vermieden werden, indem isWellFormed() verwendet wird, um den String zu testen, bevor er an encodeURI() übergeben wird.

js
const illFormed = "https://example.com/search?q=\uD800";

try {
  encodeURI(illFormed);
} catch (e) {
  console.log(e); // URIError: URI malformed
}

if (illFormed.isWellFormed()) {
  console.log(encodeURI(illFormed));
} else {
  console.warn("Ill-formed strings encountered."); // Ill-formed strings encountered.
}

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-string.prototype.iswellformed

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
isWellFormed

Legend

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

Full support
Full support
No support
No support

Siehe auch