Книга: Выразительный 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 + "'");
});
}