Марейн Хавербеке - Выразительный JavaScript

Тут можно читать онлайн Марейн Хавербеке - Выразительный JavaScript - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Марейн Хавербеке - Выразительный JavaScript краткое содержание

Выразительный JavaScript - описание и краткое содержание, автор Марейн Хавербеке, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

В процессе чтения вы познакомитесь с основами программирования и, в частности, языка JavaScript, а также выполните несколько небольших проектов. Один из самых интересных проектов — создание своего языка программирования.

Выразительный JavaScript - читать онлайн бесплатно полную версию (весь текст целиком)

Выразительный JavaScript - читать книгу онлайн бесплатно, автор Марейн Хавербеке
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

У некоторых реализаций регулярок в других языках есть особый синтаксис для поиска специальных категорий символов Unicode, типа «все прописные буквы», «все знаки препинания» или «управляющие символы». Есть планы по добавлению таких категорий и в JavaScript, но они, видимо, будут реализованы нескоро.

Итог

Регулярки – это объекты, представляющие шаблоны поиска в строках. Они используют свой синтаксис для выражения этих шаблонов.

/abc/Последовательность символов

/[abc]/Любой символ из списка

/[^abc]/Любой символ, кроме символов из списка

/[0-9]/Любой символ из промежутка

/x+/Одно или более вхождений шаблона x

/x+?/Одно или более вхождений, нежадное

/x*/Ноль или более вхождений

/x?/Ноль или одно вхождение

/x{2,4}/От двух до четырёх вхождений

/(abc)/Группа

/a|b|c/Любой из нескольких шаблонов

/\d/Любая цифра

/\w/Любой алфавитно-цифровой символ («буква»)

/\s/Любой пробельный символ

/./Любой символ, кроме переводов строки

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

/^/Начало строки

/$/Конец строки

У регулярки есть метод test, для проверки того, есть ли шаблон в строке. Есть метод exec, возвращающий массив, содержащий все найденные группы. У массива есть свойство index, показывающее, где начался поиск.

У строк есть метод matchдля поиска шаблонов, и метод search, возвращающий только начальную позицию вхождения. Метод replaceможет заменять вхождения шаблона на другую строку. Кроме этого, вы можете передать в replaceфункцию, которая будет строить строчку на замену, основываясь на шаблоне и найденных группах.

У регулярок есть настройки, которые пишут после закрывающего слэша. Опция iделает регулярку регистронезависимой, а опция gделает её глобальной, что, кроме прочего, заставляет метод replaceзаменять все найденные вхождения, а не только первое.

Конструктор RegExpможно использовать для создания регулярок из строк.

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

Упражнения

Неизбежно при решении задач у вас возникнут непонятные случаи, и вы можете иногда отчаиваться, видя непредсказуемое поведение некоторых регулярок. Иногда помогает изучить поведение регулярки через онлайн-сервис типа debuggex.com, где можно посмотреть её визуализацию и сравнить с желаемым эффектом.

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

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

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

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 + "'");

});

}

Кавычки в тексте

Допустим, вы написали рассказ, и везде для обозначения диалогов использовали одинарные кавычки. Теперь вы хотите заменить кавычки диалогов на двойные, и оставить одинарные в сокращениях слов типа aren’t.

Придумайте шаблон, различающий два этих использования кавычек, и напишите вызов метода replace, который производит замену.

Снова числа

Последовательности цифр можно найти простой регуляркой /\d+/.

Напишите выражение, находящее только числа, записанные в стиле JavaScript. Оно должно поддерживать возможный минус или плюс перед числом, десятичную точку, и экспоненциальную запись 5e-3или 1E10– опять-таки с возможными плюсом или минусом. Также заметьте, что до или после точки не обязательно могут стоять цифры, но при этом число не может состоять из одной точки. То есть, .5или 5. – допустимые числа, а одна точка сама по себе – нет.

// Впишите сюда регулярку.

var number = /^...$/;

// Tests:

["1", "-1", "+15", "1.55", ".5", "5.", "1.3e2", "1E-4",

"1e+12"].forEach(function(s) {

if (!number.test(s))

console.log("Не нашла '" + s + "'");

});

["1a", "+-1", "1.2.3", "1+1", "1e4.5", ".5.", "1f5",

"."].forEach(function(s) {

if (number.test(s))

console.log("Неправильно принято '" + s + "'");

});

10. Модули

Начинающий программист пишет программы так, как муравьи строят муравейник – по кусочку, без размышления над общей структурой. Его программы как песок. Они могут недолго простоять, но вырастая, они разваливаются.

Поняв проблему, программист тратит много времени на размышления о структуре. Его программы получаются жёстко структурированными, как каменные изваяния. Они тверды, но когда их нужно менять, над ними приходится совершать насилие.

Мастер-программист знает, когда нужна структура, а когда нужно оставить вещи в простом виде. Его программы словно глина – твёрдые, но податливые.

Мастер Юан-Ма, «Книга программирования»

У каждой программы есть структура. В частностях она определяется тем, как программист делит код на функции и блоки внутри этих функций. Программисты вольны в создании структуры своей программы. Структура определяется больше вкусом программиста, нежели функциональностью программы.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Марейн Хавербеке читать все книги автора по порядку

Марейн Хавербеке - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Выразительный JavaScript отзывы


Отзывы читателей о книге Выразительный JavaScript, автор: Марейн Хавербеке. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x