0Pricing
JavaScript Academy · Урок

Проверка данных и небольшие подводные камни

Проверяйте строки целиком с помощью якорей, избегайте жадного сопоставления лишнего текста, используйте границы слов, добавляйте простые дополнительные проверки и помните об /g с test()

«Проверка данных и небольшие подводные камни» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 3 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 3 уроков всего.

Проверка всей строки

Цель: безопасно проверять строки без неожиданных результатов.

  • Использовать ^ и $, чтобы сопоставить всю строку
  • Избегать жадного захвата лишнего; при необходимости использовать ленивый квантификатор *?
  • Использовать границы слов \\b
  • Помнить об особенностях /g при использовании test()
Проверка данных и небольшие подводные камни — иллюстрация 1

Якоря на практике

Добавляйте ^ и $, чтобы частичные совпадения не проходили проверку.

// Validate 4–6 digits ONLY (no spaces, no letters)
function isPin(text) {
  const re = /^\\d{4,6}$/;
  return re.test(text);
}

console.log("1234 ->", isPin("1234"));
console.log("12 34 ->", isPin("12 34"));
console.log("a123 ->", isPin("a123"));
Проверка данных и небольшие подводные камни — иллюстрация 2

Как избежать лишних совпадений

Жадный шаблон .* захватывает самый длинный диапазон; добавьте ?, чтобы получить самое короткое совпадение между маркерами.

// Greedy (.*) vs lazy (.*?)
const text = "say \"hi\" and \"bye\"";

// Greedy: eats too much
const g = text.match(/".*"/);
console.log("greedy:", g && g[0]);

// Lazy: shortest between quotes
const l = text.match(/".*?"/g);
console.log("lazy:", l);
Проверка данных и небольшие подводные камни — иллюстрация 3

Границы слов \\b

\\b соответствует границам между символами слова и другими символами; это полезно для поиска целых слов.

// Use \\b to match a whole word (not inside another)
const s = "restart start up";

console.log("has start word?", /\\bstart\\b/.test(s));    // true
console.log("matches restart?", /\\brestart\\b/.test(s));  // true
console.log("start inside restart?", /start/.test("restart")); // true (partial)
Проверка данных и небольшие подводные камни — иллюстрация 4

Безопасное объединение проверок

Для начинающих: сочетайте небольшое регулярное выражение с дополнительными проверками (trim, максимальная длина). Избегайте огромных шаблонов.

// Small, beginner-friendly email-like check (not RFC-complete)
// Strategy: small regex + extra length checks
function isEmailLite(text) {
  if (typeof text !== "string") return false;
  if (text.length > 254) return false;          // cap length
  const re = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;  // basic shape
  return re.test(text.trim());
}

console.log("ok:", isEmailLite("a@b.co"));
console.log("bad space:", isEmailLite("a @b.co"));
console.log("too basic:", isEmailLite("abc"));
Проверка данных и небольшие подводные камни — иллюстрация 5

Особенность глобального флага

Флаг g перемещает внутренний курсор при вызове test(). Для получения обычных логических результатов при обработке отдельных входных данных не используйте g.

// Using /g with test() changes lastIndex and can surprise you
const r = /a/g;

console.log("1st:", r.test("a")); // true
console.log("2nd:", r.test("a")); // false (cursor moved)
console.log("3rd:", r.test("a")); // true again

// Safer: avoid /g when repeatedly calling test() on separate strings
function hasA(text) {
  return /a/.test(text); // no g flag
}
console.log("safe:", hasA("a"), hasA("a"));
Проверка данных и небольшие подводные камни — иллюстрация 6

Тест по якорям для проверки

Быстрая проверка: проверка всей строки.

Проверка данных и небольшие подводные камни — иллюстрация 7

Повторение

Повторение: проверяйте строки целиком с помощью ^...$, используйте ленивый квантификатор *?, чтобы избежать лишних совпадений, добавляйте \\b для поиска целых слов, сочетайте небольшие регулярные выражения с простыми дополнительными проверками и не используйте /g при повторных вызовах test().

Проверка данных и небольшие подводные камни — иллюстрация 8

Часто задаваемые вопросы

Урок «Проверка данных и небольшие подводные камни» бесплатный?

Да — полный текст урока «Проверка данных и небольшие подводные камни» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс JavaScript Academy, подпишись на CoddyKit PRO. Курс JavaScript Academy содержит 3 уроков всего.

Чему я научусь в уроке «Проверка данных и небольшие подводные камни»?

Проверяйте строки целиком с помощью якорей, избегайте жадного сопоставления лишнего текста, используйте границы слов, добавляйте простые дополнительные проверки и помните об /g с test() Ты практикуешь JavaScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать JavaScript Academy?

Предыдущий опыт не требуется. JavaScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 3.

Сколько времени занимает урок «Проверка данных и небольшие подводные камни»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке JavaScript Academy?

Да. Каждый урок JavaScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы регулярных выражений — литералы, test, якоря и флаги
  2. Группы, захваты и замена
  3. Проверка данных и небольшие подводные камни
← Назад к JavaScript Academy