Загрузка...

Регулярные выражения

Шаблон, который прогоняют по тексту, и есть регулярное выражение. /tea/ проверяет, встречается ли tea. replace возвращает новую строку и ставит на это место mint. На странице note равен Order: tea, а видимая строка — true / Order: mint.

Карта хранила, эта страница ищет

Страница карты остановилась на lida / mint / 2. Там было хранение. Здесь гостя не сохраняют. Ищут внутри строки. Неудачный поиск возвращает false или null и ничего не бросает.

Узор уже внутри, или его нет

В lemon узора нет, поэтому /tea/.test("lemon") даёт false. В mint tea он уже сидит, поэтому /tea/.test("mint tea") даёт true. Флаг i не смотрит на регистр, и /tea/i совпадает с Tea.

Есть ли tea в тексте

javascript
console.log(/tea/.test("mint tea"));
console.log(/tea/.test("lemon"));

В журнале сначала true, потом false. Точка — это любой один символ, кроме перевода строки, поэтому /t.a/ тоже совпадает с tea. Настоящую точку пишут обратной косой чертой и точкой: .

Потребовать всю строку

^ значит начало, $ значит конец. /^tea$/ принимает tea и отвергает mint tea. Без этих меток /tea/ срабатывает и внутри более длинной заметки.

Заказ целиком

javascript
console.log(/^tea$/.test("tea"));
console.log(/^tea$/.test("mint tea"));

Журнал снова true, затем false. Буквы в mint tea есть, но целиком это не tea.

Каждая копия, затем новая строка

Флаг g меняет сбор: match с g возвращает каждую копию. replace с g меняет каждую копию и возвращает новую строку. note остаётся прежним, пока результат не присвоен.

Обе копии, затем замена

javascript
const note = "tea and tea";
console.log(note.match(/tea/g));
console.log(note.replace(/tea/g, "mint"));
console.log(note);

Журнал match — массив из двух строк tea. Журнал replace — mint and mint. Третий журнал всё ещё tea and tea, потому что replace не менял note. Без g меняется только первое tea. Если совпадений нет, match возвращает null, а не пустой массив.

Форма ответа выбирает метод

Бери метод по форме ответа, который нужен.

📊 Что возвращает каждый метод

Метод Форма ответа На этой заметке
/tea/.test(note) true или false true для Order: tea
note.match(/tea/) массив одного совпадения или null слово tea и его место
note.match(/tea/g) каждая копия или null две копии в tea and tea
note.replace(/tea/, "mint") новая строка Order: mint

test — это да или нет. match отдаёт куски. replace отдаёт переписанный текст. Чтобы текст остался, присвой его.

Страница пишет оба результата

Страница проверяет Order: tea, меняет напиток и записывает оба результата.

Строка страницы из test и replace

html
<!DOCTYPE html>
<html>
<body>
<p id="line">…</p>
<script>
const note = "Order: tea";
const found = /tea/.test(note);
const next = note.replace(/tea/, "mint");
document.querySelector("#line").textContent = found + " / " + next;
</script>
</body>
</html>

Строка читается true / Order: mint. Сама note по-прежнему Order: tea. lida / mint / 2 была страницей карты.

Пять коротких шагов

  1. Проверь mint tea шаблоном /tea/. Результат true.
  2. Проверь lemon шаблоном /tea/. Результат false.
  3. Проверь mint tea шаблоном /^tea$/. Результат false.
  4. Сопоставь tea and tea с /tea/g. Длина массива равна 2.
  5. Прочитай страницу. Строка — true / Order: mint.

Ошибки и то, что стоит запомнить

Без ^ и $ шаблон совпадает с куском, а не со всей заметкой. replace не правит оригинал.

  • Не читай null.length, если match ничего не нашёл
  • Не жди, что replace изменит note на месте
  • Не ставь g на выражение, которое снова используешь с test: оно помнит, где остановилось
  • Настоящую точку пиши обратной косой чертой и точкой
  • Не читай строку как lida / mint / 2

Запомнить

  • test отвечает true или false
  • /^tea$/ принимает только всю строку tea
  • match с g перечисляет каждую копию или возвращает null
  • replace возвращает новую строку
  • строка страницы — true / Order: mint

🧠 Проверьте Свои Знания

Готов к Началу

Проверьте Свои Знания

Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему

❓
5
Вопросы
🎯
70%
Для Прохождения
♾️
∞
Время
🔄
∞
Попытки

📝 Инструкции

  • Внимательно прочитайте каждый вопрос
  • Выберите лучший ответ на каждый вопрос
  • Вы можете пересдавать тест столько раз, сколько захотите
  • Ваш прогресс будет показан вверху