Снова привет. Я должен сказать, что в эти дни было полно JavaScript (и Git/GitHub). Сейчас я сосредоточился на регулярных выражениях и отладке, в основном на регулярных выражениях (или регулярных выражениях). Итак, в этом посте я объясню/обобщу то, с чем я имел дело в эти дни.
Регулярные выражения (RegEx): это последовательности символов, определяющие шаблон поиска в тексте. Мы можем не только найти, но и заменить определенные части текста.
Я начал с метода .test() для литеральных строк, для строк с различными возможностями с помощью оператора ИЛИ, метода match() и флагов g и i.
Во-первых, давайте установим, что нам нужно. В этом случае нам понадобятся две переменные: одна, содержащая строку, которую мы хотим оценить («строка»), и другая, содержащая строку, которую мы хотим найти в строке для оценки («поиск»). Так:
let string = “Today we are talking about Regular Expressions”
`
let search = /Regular/
Итак, если мы хотим использовать тестовый метод, то:
let result = search.test(string)
← Это вернет true. Метод .test() возвращает true или false в зависимости от того, находит ли он регулярное выражение в оцениваемой строке. Это метод регулярного выражения, который принимает в качестве параметра строку для оценки. Этот параметр ограничивается одним шаблоном, поэтому мы можем использовать оператор ИЛИ (|) для поиска более одного регулярного выражения в строке. Так:
let string = “I love dogs”
`
let search = /dogs|cats/
let result = search.test(string)
Это вернет true, если найдет один из обоих параметров, заданных в регулярном выражении.
Я также рассмотрел метод .match(). Это возвращает массив с первым совпадением при оценке регулярного выражения со строкой. Вот пример:
let string = “Repetition, Repetition, Repetition”
let search = /Repetition/
let result = string.match(search);
Это вернет: result = ["Repetition"]
`.
Метод .match() применяется к оцениваемой строке и принимает регулярное выражение в качестве параметра. Это похоже на противоположность метода .test(), который применяется к регулярному выражению и принимает строку для оценки в качестве аргумента.
Сюда входят два флага: флаг g и флаг i. Флаг g используется для поиска всех совпадений в строке. Без него метод .match вернул бы только первое совпадение. Итак, давайте напишем последний пример с флагом g:
let string = “Repetition, Repetition, Repetition”;
let search = /Repetition/g;
let result = string.match(search);
Это вернет: result = ["Repetition", "Repetition", "Repetition"]
`.
Давайте сделаем небольшую вариацию, чтобы увидеть флаг i в действии. Так:
let string = “Repetition, repetition, repetition”;
let search = /repetition/i;
let result = string.match(search);
Это вернет: result = ["Repetition"]
`. Флаг i заставляет регулярное выражение игнорировать верхний и нижний регистры, поэтому оно не будет учитывать их при поиске в строке. Без флага i у нас был бы result = ["repetition"]
, второй элемент массива.
Мы можем объединить несколько флагов в регулярном выражении:
let string = “Repetition, repetition, repetition”;
let search = /repetition/gi;
let result = string.match(search);
Это вернет: result = ["Repetition", "repetition", "repetition"]
`.
Подстановочный знак: «.». Мы используем это для соответствия любому символу. Это означает, что он занимает место символа и возвращает все совпадающие возможности. Например:
let string = “sang, sing, song, sung”;
let search = /s.ng/g;
let result = string.match(search);
Это вернет: result = ["sang", "sing", "song", "sung"]
`.
Мы можем определить группу символов, которые мы хотим сопоставить с {}:
let string = “sang, sing, song, sung”;
let search = /s[aiu]ng/g;
let result = string.match(search);
Это вернет: result = ["sang", "sing", "sung"]
`, но не ["песня"], поскольку она не указана в определенной группе.
Мы также можем установить ряд символов и чисел:
let string = "2017 was 5 years ago”;
let search = /[0-4]/g;
let result = string.match(search);
Это вернет: result = ["2", "0", "1"]
, так как 7 и 5 не находятся в установленном диапазоне. Мы можем комбинировать разные диапазоны в одном регулярном выражении.
Точно так же, как мы можем искать определенные символы, мы также можем указать регулярному выражению исключить определенные символы.
let string = "2017 was 5 years ago”;
^
let search = /[0-4]/g;
let result = string.match(search);
Это вернет каждый символ как элемент массива, за исключением тех, которые находятся в объявленном диапазоне.
Мы можем использовать сокращения, когда хотим обратиться к определенной группе символов, например числам или символам алфавита, или избежать их: Здесь:
\w: соответствует алфавиту (верхний и нижний регистры), цифрам и символу подчеркивания ("_").
\W: соответствует всем символам, кроме тех, на которые указывает \w.
\d: соответствует всем цифра. Он не включает числа, написанные буквами.
\D: соответствует всем символам, кроме тех, которые покрыты \d.
\s: соответствует пробелам.
\S: соответствует всем символы, кроме пробела.
Бывают случаи, когда мы хотим сопоставить символы или группу символов, которые появляются один или несколько раз подряд. Для этого мы можем использовать символ +. Здесь:
let string = "Helloooooo”;
let search = /o+/g;
let result = string.match(search);
Это вернет: result = ["ooooo"]
Также есть символ, который помогает нам сопоставлять символы или группы символов, встречающиеся ноль или более раз: *. Здесь:
let string = "Hell”;
let search = /Hello*/g;
let result = string.match(search);
Это вернет: result = ["Hell"]
. В отличие от +, который вернул бы null.
Я также узнал о двух типах совпадений: жадном совпадении и ленивом совпадении. Жадное совпадение находит самую длинную часть строки, которая соответствует регулярному выражению. Regex по умолчанию жадные. С другой стороны, отложенное сопоставление находит наименьшую возможную часть строки, удовлетворяющую регулярному выражению.
Мы можем определить символы или группу символов, которые мы хотим найти в начале или конце строки, с помощью ^ и $ соответственно. Здесь:
let string = "John is my name”;
^
let string2 = "My name is John”;
let search = /John/g;
let result = search.test(string);
let result2 = search.test(string2);
Это вернет true и false, поскольку «string» начинается с John, а string2 — нет. То же самое происходит и с $.
Мы можем указать, сколько раз мы хотим сопоставить символ. Здесь:
let string = "Ohhhh”;
let string2 = "Oh”;
let search = /Oh{2,5}/g; //this indicates the lower and upper number of matches
let result = search.test(string);
let result2 = search.test(string2);
Это вернет результат true, а результат2 false, поскольку строка удовлетворяет регулярному выражению, а строка2 — нет. Мы можем указать только меньшее количество случаев, которые мы хотим:
let search = /Oh{2,}/g;
Чтобы указать точное количество совпадений, мы делаем:
let search = /Oh{2}/g;
Итак, в предыдущем примере и результат, и результат2 вернули бы ложь, а let result = search.test("Ohh")
вернула бы истину.
Я немного узнал о предпросмотре и повторном использовании шаблонов, но я считаю, что должен узнать больше, прежде чем пытаться объяснить их здесь.
Что касается отладки, сертификация охватывает распространенные ошибки при написании кода. Также рассматриваются различные типы консоли: журнал консоли, очистка, тип и предупреждение.
Я обновлю больше об этом в будущих сообщениях. Приветствую и не сдаюсь.