Снова привет. Я должен сказать, что в эти дни было полно 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") вернула бы истину.

Я немного узнал о предпросмотре и повторном использовании шаблонов, но я считаю, что должен узнать больше, прежде чем пытаться объяснить их здесь.

Что касается отладки, сертификация охватывает распространенные ошибки при написании кода. Также рассматриваются различные типы консоли: журнал консоли, очистка, тип и предупреждение.

Я обновлю больше об этом в будущих сообщениях. Приветствую и не сдаюсь.