Базовые обозначения regex для JavaScript / TypeScript. Метасимволы, квантификаторы, классы, якоря — всё в одном месте, чтобы не держать в голове.
Классы символов: \d, \w, \s и их отрицания.
Сколько раз повторяется предыдущий элемент.
Позиции в строке, а не символы.
Проверяем строку целиком.
Правило: маленькая буква — категория, БОЛЬШАЯ — её отрицание.
| Значок | Что обозначает | Пример |
|---|---|---|
| . | любой символ (кроме переноса строки) | «a», «5», «!» |
| \d | цифра 0–9 | «7» |
| \D | НЕ цифра | «a», «!» |
| \w | буква / цифра / _ (только латиница!) | «a», «5», «_» |
| \W | НЕ словесный символ | «!», « » |
| \s | пробел / таб / перенос строки | « » |
| \S | НЕ пробельный | «a» |
Правило: квантификатор относится к тому, что стоит прямо перед ним.
| Значок | Сколько раз | Обязателен? |
|---|---|---|
| + | один или больше | да |
| * | ноль или больше | нет |
| ? | ноль или один | нет |
| {3} | ровно 3 | да |
| {2,4} | от 2 до 4 | да |
| {2,} | 2 и больше | да |
Правило: весь класс [...] совпадает с ОДНИМ символом строки.
| Значок | Что обозначает | Пример |
|---|---|---|
| [abc] | один из: a, b, c | «b» |
| [a-z] | диапазон (любая строчная латиница) | «g» |
| [а-яё] | русские строчные (+ё вручную) | «ж» |
| [^abc] | любой КРОМЕ a, b, c | «x» |
| [0-9] | то же что \d | «5» |
Правило: ^…$ = проверяем строку целиком (главное для валидации).
| Значок | Что обозначает | Пример |
|---|---|---|
| ^ | начало строки | /^a/ → строка с «a» в начале |
| $ | конец строки | /a$/ → строка с «a» в конце |
| \b | граница слова | /\bкот\b/ → «кот» целым словом |
| \B | НЕ граница слова | (нужен редко) |
Правило: слэш \ перед спецсимволом делает его обычным символом.
| \. | буквальная точка |
|---|---|
| \? | буквальный вопрос |
| \/ | буквальный слэш |
| \\ | буквальный обратный слэш |
Смысл 1: начало строки (вне [])
Смысл 2: «кроме» (внутри [] первым)
Смысл 1: буквальный дефис (по краям [])
Смысл 2: диапазон (в середине [])
Смысл 1: любой символ (обычно)
Смысл 2: точка (внутри [] или с \)
Каждая строка — одна строчка таблицы. Вставляй в консоль браузера.
/./.test("!") // точка — любой символ /\d/.test("7") // цифра /\D/.test("a") // НЕ цифра /a+/.test("aaa") // один и больше /a?/.test("") // ноль или один /[a-z]/.test("g") // диапазон /[^0-9]/.test("x") // кроме /^a/.test("abc") // начало /a$/.test("cba") // конец /\./.test("3.14") // буквальная точка