# Символ шляпки внутри наборов в регулярках JavaScript

Как вы знаете, шляпка внутри `[ ]` делает отрицание, будучи написанной в начале скобок. Значит, она является спецсимволом внутри этих скобок. Чтобы получить шляпку как символ, нужно или заэкранировать ее, или убрать с первого места.

## Пример

В следующем примере шаблон поиска такой: первый символ - это все кроме `'d'`, потом две буквы `'x'`.

`let str = 'axx bxx ^xx dxx'; let res = str.replace(/[^d]xx/g, '!');`

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

`'! ! ! dxx'`

## Пример

А теперь шаблон поиска такой: первый символ - это `'d'` или `'^'`, потом две буквы `'x'`:

`let str = 'axx bxx ^xx dxx'; let res = str.replace(/[d^]xx/g, '!');`

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

`'axx bxx ! !'`

## Пример

Можно не убирать шляпку с первого места, а просто заэкранировать ее с помощью обратного слеша, и она станет обозначать саму себя:

`let str = 'axx bxx ^xx dxx'; let res = str.replace(/[\^d]xx/g, '!');`

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

`'axx bxx ! !'`

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

Дана строка:

`let str = '^xx axx ^zz bkk @ss';`

Напишите регулярку, которая найдет строки по шаблону: шляпка или собака, а затем две латинских буквы.

Дана строка:

`let str = '^xx axx ^zz bkk @ss';`

Напишите регулярку, которая найдет строки по шаблону: НЕ шляпка и не собака, а затем две латинских буквы.

Дана строка:

`let str = '^xx axx ^zz bkk';`

Напишите регулярку, которая найдет строки по шаблону: не шляпка и не пробел, а затем две латинских буквы.

← →
↑
en ru