Spec-Zone.ru › JavaScript

RegExp.prototype.dotAll

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

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

Свойство доступа dotAll экземпляров RegExp возвращает, используется ли флаг s с этим регулярным выражением.

Попробуйте

const regex1 = /f.o/s;

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

const regex2 = /bar/;

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

Описание

RegExp.prototype.dotAll имеет значение true, если использовался флаг s; в противном случае false. Флаг s указывает, что специальный символ точки (.) дополнительно соответствует символам новой строки в строке, которые он иначе не соответствовал бы:

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

Это фактически означает, что точка будет соответствовать любой кодовой единице UTF-16. Однако она не будет соответствовать символам, находящимся за пределами основного многоязычного плоскости Unicode (BMP), также известным как астровые символы, которые представлены в виде суррогатных пар и требуют сопоставления с двумя шаблонами . вместо одного.

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

Флаг u (unicode) можно использовать, чтобы точка соответствовала астровым символам как одному символу.

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

Обратите внимание, что шаблон, такой как .*, по-прежнему способен потреблять астровые символы как часть большего контекста, даже без флага u.

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

Использование флагов s и u в сочетании позволяет точке более интуитивно соответствовать любому символу Unicode.

Сеттер свойства dotAll является undefined. Вы не можете изменить это свойство напрямую.

Примеры

Использование dotAll

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

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

Спецификация
ECMAScript® 2027 Language Specification
# sec-get-regexp.prototype.dotAll

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

Настольные компьютеры Мобильные Сервер
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
dotAll
62
79
78
49
11.1
62
79
46
11.3
8.0
62
11.3
1.0.0
1.0
8.10.0

См. также

  • Polyfill флага dotAll в core-js
  • RegExp.prototype.lastIndex
  • RegExp.prototype.global
  • RegExp.prototype.hasIndices
  • RegExp.prototype.ignoreCase
  • RegExp.prototype.multiline
  • RegExp.prototype.source
  • RegExp.prototype.sticky
  • RegExp.prototype.unicode

© 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/RegExp/dotAll

Spec-Zone.ru

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