Как обозначается абсолютно любой символ в RegExp?

Мне нужно получить строку данные между ```:

Как пример из строки

```
Я пожилой
Дракон
```

мне нужно получить "Я пожилой\nДракон".
Для этой задачи я использую RegExp. Как в них обозначить абсолютно любой символ, даже с \n?


Ответы (3 шт):

Автор решения: WalkMess
const str = `Я пожилой\\n\Дракон`;  
const text = `Я пожилой Дракон`.split(' Дракон').join('\\n\Дракон');

Спецсимволы

В javaScript если нет переноса визуально, то он есть не визуально. Пример -

const test = `Тут 
Есть
перенос
строки`.split('\n')

console.log(test);

→ Ссылка
Автор решения: Evil Giraffe

Любой символ - это [\w|\W], благодаря комментарию @xmikex.

→ Ссылка
Автор решения: Wiktor Stribiżew

Если вы используете регулярное выражение в среде, поддерживающей стандарт ECMAScript 2018+, вы можете использовать . для поиска любого символа вместе с флагом s.

const text = '```\nЯ пожилой\nДракон\n```';
const regex = /```(.*?)```/gs;
console.log( Array.from(text.matchAll(regex), (x) => x[1].trim()) )

Я использовал String#matchAll и регулярное выражение с захватывающей подмаской, так как левый и правый разделители совпадают (```). Иначе можно было бы использовать выражение с блоками просмотра назад/вперёд и String#match: text.match(/(?<=```\s*).*?(?=\s*```)/gs) (это не сработает, если в строке больше одного совпадения).

Если нужна поддержка любого стандарта ECMAScript, можно использовать [^]:

var text = '```\nЯ пожилой\nДракон\n```';
var regex = /```([^]*?)```/g;
var arr=[],m;
while(m = regex.exec(text)) {
  arr.push(m[1].trim())
}
console.log(arr);

Кроме того, можно использовать [\s\S], [\d\D] или [\w\W] для поиска любого символа. Эти конструкции менее эффективны, однако их можно использовать в тех случаях, когда выражения могут быть использованы не только в среде JavaScript, так как они поддерживаются во всех регулярных выражениях NFA.

→ Ссылка