JS

Статьи о JavaScript — инструкции, советы, полезные руководства.

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

Часто бывает нужна какая-нибудь конкретная регулярка — например, проверить почту или номер телефона. Собрали 40 часто встречаемых, чтобы они всегда были под рукой (или, на худой конец, в закладках).

#НазваниеРегулярное выражение
1Проверка email/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
2Проверка URL/^https?:\/\/[\w\-]+(\.[\w\-]+)+[/#?]?.*$/
3Только цифры/^\d+$/
4Только буквы/^[a-zA-Z]+$/
5Телефон РФ/^(?:\+7|8)[\s-]?\(?\d{3}\)?[\s-]?\d{3}[\s-]?\d{2}[\s-]?\d{2}$/
6HEX-цвет/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/
7IPv4-адрес/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/
8Дата ДД.ММ.ГГГГ/^(0[1-9]|[12]\d|3[01])\.(0[1-9]|1[012])\.(19|20)\d{2}$/
9Время ЧЧ:ММ/^([01]\d|2[0-3]):([0-5]\d)$/
10Сильный пароль (8+ символов, буквы + цифры)/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/
11Хотя бы одна заглавная буква/(?=.*[A-Z])/
12Только латиница и цифры/^[a-zA-Z0-9]+$/
13YouTube ID из ссылки/(?:v=|\/embed\/|\.be\/)([^?&"]{11})/
14Удалить HTML-теги/<[^>]*>/g
15Удалить лишние пробелы/\s+/g
16Найти все цифры/\d+/g
17Заменить цифры на */\d/g
18CamelCase → snake_case/([A-Z])/g
19snake_case → camelCase/_[a-z]/g
20Первая буква заглавная/^\w/
21Все слова с заглавной/\b\w/g
22Повторяющиеся слова/\b(\w+)\b\s+\1\b/gi
23UUID/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i
24Base64/^(data:[^;]+;base64,)?[A-Za-z0-9+/=]+$/
25Число с плавающей точкой/^-?\d*(\.\d+)?$/
26Сумма в рублях/^\d{1,3}(?:\s\d{3})*(?:[.,]\d{1,2})?\s?₽?$/
27@упоминания/@\w+/g
28#хэштеги/#\w+/g
29Удалить эмодзи/[\u{1F600}-\u{1F6FF}|\u{2600}-\u{26FF}|\u{2700}-\u{27BF}]/gu
30Только кириллица/^[а-яА-ЯёЁ]+$/u
31Логин (3–20 символов)/^[a-zA-Z0-9_-]{3,20}$/
32Есть спецсимволы/[^a-zA-Z0-9\s]/
33Пробелы в начале/конце/^\s|\s$/
34Все числа в тексте/-?\d+(\.\d+)?/g
35Сжать пробелы/\s+/g
36Пустая строка или пробелы/^\s*$/
37Простая CSV-строка/^[^,\r\n]+(,[^,\r\n]+)*$/
38IPv6 (упрощённо)/^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$/
39Только пробелы и табы/^[\s\t]*$/
40Случайный пароль 12 символов (паттерн)/[A-Za-z0-9]{12}/

Сохрани страницу — и 40 самых полезных регулярных выражений всегда под рукой!

JS
  • 9 ноября 2025
Полный гайд по объекту Date в JavaScript

Полный гайд по объекту Date в JavaScript

Объект Date позволяет создавать, сравнивать и форматировать дату и время. Используется для отображения текущего времени, вычисления интервалов и работы с таймзонами в веб-приложениях.

Доступно в Baseline в статусе «Widely Available» с 2018-01-29

Читать дальше
JS
  • 8 ноября 2025

Chrome DevTools останется без «живого» редактирования JS

Инструменты разработчика в браузере Chrome лишатся одной из своих экспериментальных возможностей — «живого редактирования» JavaScript-кода. Как сообщила команда разработчиков в официальном блоге, функция будет полностью удалена в феврале 2026 года с выходом версии Chrome 145. Это решение отражает эволюцию современных инструментов веб-разработки.

Читать дальше
JS
  • 23 октября 2025
Форматирование относительного времени в JavaScript

Форматирование относительного времени в JavaScript

API Intl.RelativeTimeFormat доступно в Baseline в статусе «Widely Available» с 16 марта 2023 года. Это мощный инструмент для отображения относительного времени в локализованном виде, например, «через минуту», «вчера» или «2 недели назад». Он автоматически адаптируется к языку и культурным особенностям региона, делая интерфейс более понятным и дружелюбным для пользователей.

В этой статье мы разберём, как работает Intl.RelativeTimeFormat, и приведём несколько примеров его использования.

Читать дальше
JS
  • 17 октября 2025
Что такое null-коалесцентный оператор ?? в JavaScript

Что такое null-коалесцентный оператор ?? в JavaScript

Операторы ?? и ??= стали доступны в Baseline в статусе «Widely Available» с 16 марта 2023 года. Они упрощают работу с переменными, которые могут быть null или undefined, позволяя задавать значения по умолчанию или обновлять переменные только в этих случаях. Это делает код чище и понятнее, особенно при работе с потенциально отсутствующими данными.

В этой статье мы разберём, как работают операторы нулевого слияния, и покажем примеры их использования.

Читать дальше
JS
  • 15 октября 2025
Кодирование и декодирование Base64 с atob и btoa

Кодирование и декодирование Base64 с atob и btoa

Функции btoa() и atob() — это встроенные средства JavaScript для кодирования и декодирования строк в формате Base64.

С 20 марта 2019 года они входят в статус «Widely Available» по Baseline — значит, поддерживаются всеми современными браузерами и подходят для использования в продакшене.

Читать дальше
JS
  • 14 октября 2025
Как найти элемент в массиве по индексу на JS

Как найти элемент в массиве по индексу на JS

Метод at() возвращает элемент массива по индексу. Отрицательные индексы позволяют отсчитывать элементы с конца массива.

const numbers = [10, 20, 30, 40, 50];

// Получаем элемент по индексу
console.log(numbers.at(0));   // 10
console.log(numbers.at(2));   // 30

// С конца массива
console.log(numbers.at(-1));  // 50
console.log(numbers.at(-3));  // 30

Здесь показано, что at() работает как обычный доступ по индексу, но с преимуществом: отрицательные числа позволяют легко получать элементы с конца массива. Это особенно удобно, когда размер массива заранее неизвестен.

// Использование с типизированными массивами
const typedArr = new Uint8Array([1, 2, 3, 4]);
console.log(typedArr.at(1));   // 2
console.log(typedArr.at(-2));  // 3

Метод одинаково хорошо работает и с типизированными массивами (TypedArray), что делает его универсальным инструментом для работы с любыми последовательностями чисел.

// Безопасный доступ
console.log(numbers.at(10));   // undefined
console.log(numbers.at(-10));  // undefined

Если индекс выходит за границы массива, метод возвращает undefined. Это безопаснее, чем напрямую обращаться к элементу через квадратные скобки, так как код остаётся читаемым и предсказуемым.

Метод at() делает код чище и удобнее, особенно когда нужно работать с элементами с конца массива или с переменной длиной массива.

JS
  • 3 октября 2025

Как в 2025 году вибрануть сайтом

Шутки в сторону, на кону серьёзная задача — нужно вибрануть сайтом. К счастью, в 2025 году это не очень сложно и нужна поддержка есть. Vibration API поддерживается почти везде, кроме Safari. Конечно, ещё нужно устройство с вибромотором, но тут подойдут почти все телефоны, если есть нужный браузер.

Не будем растягивать эту инструкцию и давайте начнём с базовой страницы (это будет просто кнопка, выровненная по центру.)

<html>
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Кнопка по центру</title>
</head>
<body>
 <button>Нажми меня</button>
</body>
</html>

Ну или ладно, сначала она вообще не по центру. Добавим стили, чтобы кнопка получила цвет и оказалась там, где мы хотим. Вставьте весь этот тег <style> куда-нибудь внутри <head>.

<style>
   body {
     margin: 0;
     height: 100vh;
     display: flex;
     justify-content: center;
     align-items: center;
     background-color: #f0f0f0;
   }
   button {
     padding: 15px 30px;
     font-size: 18px;
     background-color: #007bff;
     color: white;
     border: none;
     border-radius: 5px;
     cursor: pointer;
   }
   button:hover {
     background-color: #0056b3;
   }
 </style>

Чтобы добавить поддержку вибрации, слегка изменим код внутри <body> — добавим скрипт, который проверяет поддержку вибрации и вибрирует.

<body>
 <button id="vibrateButton">Нажми меня</button>
 <p id="status">Проверка поддержки вибрации...</p>

 <script>
   const vibrateButton = document.getElementById('vibrateButton');
   const statusText = document.getElementById('status');

   if ('vibrate' in navigator) {
     statusText.textContent = 'Vibration API поддерживается!';
     vibrateButton.addEventListener('click', () => {
       navigator.vibrate(200); // Вибрация на 200 мс
       statusText.textContent = 'Устройство завибрировало!';
     });
   } else {
     vibrateButton.disabled = true;
     statusText.textContent = 'Vibration API не поддерживается.';
   }
 </script>
</body>

И всё!

Есть, конечно, нюанс. В теории с поддержкой всё хорошо, а на практике при проверке у редакции на Андроид-смартфоне вибрация поддерживается в Chrome и Яндекс-браузере, а в Firefox не работает (хотя на CanIUse и написано обратное).

Но теперь, если вы хотите клёво вибрануть телефоном в ответ на реакцию в каком-нибудь чатике, вы точно знаете, что делать.

JS
  • 3 октября 2025
Использование метода normalize() для строк в JavaScript

Использование метода normalize() для строк в JavaScript

Метод normalize() приводит строки к единой форме Unicode. Это нужно, когда один символ (например, буква с акцентом) записан по-разному, но должен обрабатываться одинаково. Метод доступен с 20 марта 2019 года (статус Baseline «Widely Available»).

Пример: буква «é» может быть единой или комбинацией «e» и «́». normalize() делает их одинаковыми для сравнения.

const str1 = 'e\u0301'; // «e» + акцент
const str2 = 'é'; // единая «é»

console.log(str1 === str2); // false
console.log(str1.normalize() === str2.normalize()); // true

Получается, в Unicode один символ может быть записан разными способами, что мешает при сравнении строк, поиске или сортировке. normalize() решает эту проблему, приводя строку к стандартной форме.

Читать дальше
JS
  • 12 сентября 2025
Таймеры в JS с setTimeout и clearTimeout

Таймеры в JS с setTimeout и clearTimeout

setTimeout — это метод, предоставляемый API браузеров и Node.js, который позволяет выполнять код с заданной задержкой. Он принимает функцию (коллбэк), время задержки в миллисекундах и, опционально, аргуtimes для передачи в функцию. Для отмены выполнения используется clearTimeout.

setTimeout и setInterval были введены в первых версиях JavaScript (ECMAScript 1, 1997) как часть API WindowOrWorkerGlobalScope. Эти методы интегрированы в цикл событий (event loop), который управляет асинхронным выполнением в JavaScript. Несмотря на появление современных инструментов, таких как Promises и async/await, setTimeout остаётся востребованным благодаря своей простоте и универсальности.

const timerId = setTimeout(() => {
  console.log('Сообщение появится через 2 секунды');
}, 2000);

// Отмена выполнения
clearTimeout(timerId);

Здесь setTimeout возвращает числовой идентификатор таймера (timerId), который используется в clearTimeout. В Node.js возвращается объект Timeout.

Читать дальше
JS
  • 6 сентября 2025