Книга: Выразительный JavaScript

Регулярный гольф

Регулярный гольф

«Гольфом» в коде называют игру, где нужно выразить заданную программу минимальным количеством символов. Регулярный гольф – практическое упражнение по написанию наименьших возможных регулярок для поиска заданного шаблона, и только его.

Для каждой из подстрочек напишите регулярку для проверки их нахождения в строке. Регулярка должна находить только эти указанные подстроки. Не волнуйтесь насчёт границ слов, если это не упомянуто особо. Когда у вас получится работающая регулярка, попробуйте её уменьшить.

1 car и cat

2 pop и prop

3 ferret, ferry, и ferrari

4 Любое слово, заканчивающееся на ious

5 Пробел, за которым идёт точка, запятая, двоеточие или точка с запятой.

6 Слово длиннее шести букв

7 Слово без букв e

// Впишите свои регулярки
verify(/.../,
       ["my car", "bad cats"],
       ["camper", "high art"]);
verify(/.../,
       ["pop culture", "mad props"],
       ["plop"]);
verify(/.../,
       ["ferret", "ferry", "ferrari"],
       ["ferrum", "transfer A"]);
verify(/.../,
       ["how delicious", "spacious room"],
       ["ruinous", "consciousness"]);
verify(/.../,
       ["bad punctuation ."],
       ["escape the dot"]);
verify(/.../,
       ["hottentottententen"],
       ["no", "hotten totten tenten"]);
verify(/.../,
       ["red platypus", "wobbling nest"],
       ["earth bed", "learning ape"]);
function verify(regexp, yes, no) {
  // Ignore unfinished exercises
  if (regexp.source == "...") return;
  yes.forEach(function(s) {
    if (!regexp.test(s))
      console.log("Не нашлось '" + s + "'");
  });
  no.forEach(function(s) {
    if (regexp.test(s))
      console.log("Неожиданное вхождение '" + s + "'");
  });
}

Оглавление книги


Генерация: 1.636. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз