# Группы символов в регулярных выражениях JavaScript

Существуют специальные команды, которые позволяют выбрать сразу целые группы символов. Команда `\d` означает цифру от `0` до `9`. Команда `\w` обозначает цифру, латинскую букву или знак подчеркивания. Команда `\s` обозначает пробел или пробельный символ: пробел, перевод строки, табуляцию. Можно инвертировать значение команды, написав большую букву: например, если `\d` - цифра, то `\D` - не цифра.

## Пример

Давайте найдем все цифры:

`let str = '1 12 123'; let res = str.replace(/\d/g, '!');`

В результате в переменную запишется следующее:

`'! !! !!!'`

## Пример

Операторы повторения считают команды-группы одним целым, то есть группирующие скобки не нужны. В следующем примере шаблон поиска выглядит так: цифра от `0` до `9` один или более раз:

`let str = '1 12 123 abc @@@'; let res = str.replace(/\d+/g, '!');`

В результате в переменную запишется следующее:

`'! ! ! abc @@@'`

## Пример

В следующем примере шаблон поиска выглядит так: все что угодно один или более раз, но не цифра от `0` до 9:

`let str = '123abc3@@'; let res = str.replace(/\D+/g, '!');`

В результате в переменную запишется следующее:

`'123!3!'`

## Пример

В данном примере шаблон поиска выглядит так: пробельный символ один раз:

`let str = '1 12 123 abc @@@'; let res = str.replace(/\s/g, '!');`

В результате в переменную запишется следующее:

`'1!12!123!abc!@@@'`

## Пример

В данном примере шаблон поиска выглядит так: НЕ пробельный символ один или более раз. Все подстроки, разделенные пробелами, заменятся на `'!'`:

`let str = '1 12 123 abc @@@'; let res = str.replace(/\S+/g, '!');`

В результате в переменную запишется следующее:

`'! ! ! ! !'`

## Пример

В данном примере шаблон поиска выглядит так: цифра или буква один или более раз. Все подстроки, состоящие из цифр и букв, заменятся на `'!'`:

`let str = '1 12 123a Abc @@@'; let res = str.replace(/\w+/g, '!');`

В результате в переменную запишется следующее:

`'! ! ! ! @@@'`

## Пример

В данном примере шаблон поиска выглядит так: НЕ цифра и НЕ буква один или более раз. Под данное определение в нашем случае попадает `'@@@'` и все пробелы (они ведь тоже не цифры и не буквы). Обратите внимание на то, что в конце один `'!'` - в него преобразовалась строка `' @@@'` - с пробелом впереди:

`let str = '1 12 123 Abc @@@'; let res = str.replace(/\W+/g, '!');`

В результате в переменную запишется следующее:

`'1!12!123!Abc!'`

## Практические задачи

Дана строка:

`let str = 'a1a a2a a3a a4a a5a aba aca';`

Напишите регулярку, которая найдет строки, в которых по краям стоят буквы `'a'`, а между ними одна цифра.

Дана строка:

`let str = 'a1a a22a a333a a4444a a55555a aba aca';`

Напишите регулярку, которая найдет строки, в которых по краям стоят буквы `'a'`, а между ними любое количество цифр.

Дана строка:

`let str = 'aa a1a a22a a333a a4444a a55555a aba aca';`

Напишите регулярку, которая найдет строки, в которых по краям стоят буквы `'a'`, а между ними любое количество цифр (в том числе и ноль цифр, то есть строка `'aa'`).

Дана строка:

`let str = 'avb a1b a2b a3b a4b a5b abb acb';`

Напишите регулярку, которая найдет строки следующего вида: по краям стоят буквы `'a'` и `'b'`, а между ними - не число и не пробел.

Дана строка:

`let str = 'ave a#b a2b a$b a4b a5b a-b acb';`

Напишите регулярку, которая найдет строки следующего вида: по краям стоят буквы `'a'` и `'b'`, а между ними - не буква, не цифра и не пробел.

Дана строка:

`let str = 'ave a#a a2a a$a a4a a5a a-a aca';`

Напишите регулярку, которая заменит все пробелы на `'!'`.

← →
↑
en ru