import { Meta } from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/functional-basic/Functions/getSearchExp - Создание RegExp для поиска по всем словам'/>

# `getSearchExp`

Утилита, строящая регистронезависимое регулярное выражение `RegExp` для поиска строк, содержащих **все** слова из поисковой строки (в любом порядке).

Каждое слово разбивается пробелами, экранируется и оборачивается в positive lookahead `(?=.*?слово)`. Это удобно для реализации живого поиска или фильтрации по нескольким словам одновременно.

**Параметры:**
- `search: string` — Строка поиска, состоящая из одного или нескольких слов, разделённых пробелами.
- `limit: number` (необязательно, по умолчанию: `128`) — Максимально допустимая длина строки поиска.

**Возвращает:**
`RegExp` — Регулярное выражение с флагом `i` (без учёта регистра).
- Если строка `search` пустая, не является строкой или превышает `limit`, возвращается `/^/` (совпадает с началом любой строки).

```typescript
import { getSearchExp } from '@dxtmisha/functional-basic'

// Базовое использование
const regex = getSearchExp('foo bar')

regex.test('foo bar baz')  // true  — содержит оба слова
regex.test('bar foo')      // true  — порядок не важен
regex.test('foo only')     // false — слово "bar" отсутствует

// Специальные символы экранируются автоматически
const regex2 = getSearchExp('цена $10.00')
regex2.test('цена $10.00') // true
regex2.test('цена X10Y00') // false

// Использование пользовательского лимита
const regex3 = getSearchExp('очень длинная строка поиска', 10)
regex3.test('любая строка') // true — возвращает /^/, так как длина поиска > 10
```
