Spec-Zone.ru › JavaScript

String.prototype.isWellFormed()

Базовая поддержка Широко доступно

Эта возможность хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с октября 2023 года.

Метод isWellFormed() значений String возвращает логическое значение, указывающее, содержит ли эта строка какие-либо одиночные суррогаты.

Синтаксис

isWellFormed()

Параметры

Нет.

Возвращаемое значение

Возвращает true, если эта строка не содержит одиночных суррогатов, и false в противном случае.

Описание

Строки в JavaScript кодируются в UTF-16. Кодирование UTF-16 включает понятие суррогатных пар, которое подробно описано в разделе Символы UTF-16, кодовые точки Unicode и кластеры графем.

isWellFormed() позволяет проверить, является ли строка корректной (то есть не содержит одиночных суррогатов). По сравнению с пользовательской реализацией, isWellFormed() является более эффективным, поскольку движки могут напрямую обращаться к внутреннему представлению строк. Если вам нужно преобразовать строку в корректную строку, используйте метод toWellFormed(). isWellFormed() позволяет обрабатывать некорректные строки иначе, чем корректные, например, генерировать ошибку или помечать их как недопустимые.

Примеры

Использование isWellFormed()

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

Избегание ошибок в encodeURI()

encodeURI генерирует ошибку, если переданная строка некорректна. Этого можно избежать, используя isWellFormed() для проверки строки перед передачей ее в encodeURI().

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

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-string.prototype.iswellformed

Совместимость с браузерами

Десктопные Мобильные Серверные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
isWellFormed
111
111
119
97
16.4
111
119
75
16.4
22.0
111
16.4
1.0.0
1.32
20.0.0

Смотрите также

  • Полифил String.prototype.isWellFormed в core-js
  • Полифил es-shims для String.prototype.isWellFormed
  • String.prototype.toWellFormed()
  • String.prototype.normalize()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/isWellFormed

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API