updated regex cheatsheet

This commit is contained in:
cheatsnake 2022-10-17 20:07:29 +03:00
parent bf1b11df43
commit 23c9fbb8b0

View File

@ -16,10 +16,10 @@
Флаги влияют на результат поиска. Их всего 5 штук:
- `i` позволяет игнорировать регистры букв (нет разницы между *A* и *a*).
- `i` позволяет игнорировать регистры букв (нет разницы между *A* и *a*).
- `g` позволяет искать все совпадения в тексте, без него только первое.
- `m` включение многострочного режима (влияет только на поведение `^` и `$`).
- `s` текст трактуется как одна строка, в этом случае метасимволу `.` (точка) соответствует любой одиночный символ, включая символ новой строки.
- `m` включение многострочного режима (влияет только на поведение `^` и `$`).
- `s` текст трактуется как одна строка, в этом случае метасимволу `.` (точка) соответствует любой одиночный символ, включая символ новой строки.
- `u` unicode-трактовка. Выражение может содержать специальные паттерны, характерные для юникода.
## Специальные конструкции
@ -29,45 +29,97 @@
На месте точки может быть любой символ. Количеством точек можно определять длину слов.
```js
/t..k/g;
/t..k/g
```
_take look team <ins>took</ins> hike track <ins>teak</ins> time_
> take look team <ins>took</ins> hike track <ins>teak</ins> time
#### Перечень `[]`
Позволяют указать определенный перечень символов.
```js
/t[aoi]k/g;
/t[aoi]k/g
```
_tek <ins>tok</ins> tdk <ins>tak</ins> <ins>tik</ins> tuk tyk took taoik_
> tek <ins>tok</ins> tdk <ins>tak</ins> <ins>tik</ins> tuk tyk took taoik
#### Исключающий перечень `[^]`
Позволяет исключить определенный набор символ из поиска, используется вместе с квадратными скобками.
```js
/ba[^td]/g;
/ba[^td]/g
```
_<ins>ban</ins> <ins>bag</ins> bat <ins>bas</ins> bad_
> <ins>ban</ins> <ins>bag</ins> bat <ins>bas</ins> bad
#### Диапазон `[-]`
Указывает диапазон с первого по последний символ (включительно) в алфавитном порядке.
```js
/[a-d]../g;
/[a-d]../g
```
_ost hst <ins>ast</ins> fst <ins>cst</ins> <ins>bst</ins>_
> ost hst <ins>ast</ins> fst <ins>cst</ins> <ins>bst</ins>
Аналогично работает с цифрами:
```js
/201[5-9]/g;
/201[5-9]/g
```
_2010 2012 <ins>2015</ins> <ins>2017</ins> <ins>2019</ins> 2022_
> 2010 2012 <ins>2015</ins> <ins>2017</ins> <ins>2019</ins> 2022
#### Повторения `*`
Звездочка после символа указывает, что данный символ может отсутствовать, либо совпадать один или более раз.
```js
/wo*w/g
```
> <ins>wow</ins> waw wiw <ins>woooow</ins> wawe <ins>ww</ins> <ins>woow</ins>
#### Повторения `+`
Плюс после символа указывает, что данный символ должен присутствовать один или более раз.
```js
/go+gle/g
```
> <ins>google</ins> ggle <ins>gogle</ins> gugle g00gle <ins>goooogle</ins>
#### Необязательный символ `?`
Вопросительный знак после символа указывает, что данный символ является не обязательным (может либо отсутствовать, либо встрачаться только один раз).
```js
/bou?nd/g
```
> <ins>bond</ins> <ins>bound</ins> bouuund boynd
#### Количество повторений `{}`
Чтобы указать точное количетво повторений, необходимо после символа записать фигурные скобки с нужным числом.
```js
/bo{3}m/g
```
> boom bom <ins>booom</ins> bm boooom
#### Диапазон повторений `{,}`
Чтобы указать диапазон повторений, необходимо после символа записать фигурный скобки с нужным диапазоном разделенным запятой.
```js
/lo{2,4}k/g
```
> lok <ins>look</ins> lk <ins>loook</ins> <ins>looook</ins> loooooook
Верхнюю границу можно опускать. Например, запись `a{3,}` говорит о том, что символ _a_ должен втречаться не менее трёх раз.