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
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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.lastIndexRegExp.prototype.globalRegExp.prototype.hasIndicesRegExp.prototype.ignoreCaseRegExp.prototype.multilineRegExp.prototype.sourceRegExp.prototype.stickyRegExp.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