Регулярни изрази (Regex)
Регулярните изрази са мощен инструмент за търсене и обработка на текст. В JavaScript те се използват за да проверявате дали низ от символи отговаря на даден шаблон.
Например, ако искате да проверите дали низът "JavaScript" се съдържа в друг низ, може да използвате следния регулярен израз:
/JavaScript/
Този регулярен израз ще търси точно това съчетание от символи в текста.
Можете да използвате регулярни изрази за да търсите и други видове съвпадения, като например:
- Търсене на думи с определена малка или главна буква
- Търсене на повтарящи се символи
- Търсене на символи, които се срещат в определени места от низа (например, в началото или края на низа)
- И много други.
Ето някои от основните конструкции за регулярните изрази в JavaScript:
- Литерален регулярен израз
Най-простият начин да създадете регулярен израз в JavaScript е да използвате литерален регулярен израз. Това е просто константа, която представлява регулярен израз, и се записва в двойни наклонени скоби:
/регулярен израз/
2. Модификатори
Модификаторите влияят на начина, по който регулярният израз търси съвпадения в текста. В JavaScript се използват следните модификатори:
i
- Търсене без значение на главни/малки буквиg
- Търсене на повече от едно съвпадение (глобално търсене)m
- Много редово търсене
Например, ако искате да търсите думата "JavaScript" без значение на главни/малки букви, можете да използвате следния регулярен израз:
/javascript/i
3. Класове на символи
Класовете на символи представляват група от символи, които могат да се съвпадат с даден регулярен израз. В JavaScript се използват следните класове на символи:
\d
- Цифра\w
- Буква, цифра или знак за подчертаване\s
- Разделител (space, tab, нов ред и други)
Например, ако искате да търсите всички цифри в текста, можете да използвате следния регулярен израз:
/\d/
Този регулярен израз ще се съвпадне с всяка цифра в текста.
4. Квантификатори
Квантификаторите определят колко пъти даден символ или група от символи трябва да се срещне, за да се съвпадне регулярният израз. В JavaScript се използват следните квантификатори:
+
- Поне един път*
- Нула или повече пъти?
- Нула или един път{n}
- Точно n пъти{n,}
- Най-малко n пъти{n,m}
- Между n и m пъти
Например, ако искате да търсите дума, която съдържа поне 3 букви, може да използвате следния регулярен израз:
/\w{3,}/
Този регулярен израз ще се съвпадне с всяка дума, която съдържа поне 3 букви.
Ето няколко примера за използване на регулярни изрази в JavaScript:
- Търсене на думи, които започват с главна буква:
const text = "JavaScript is a programming language.";
const regex = /\b[A-Z]\w*/g;
const matches = text.match(regex);
console.log(matches);
В този пример използваме регулярния израз \b[A-Z]\w*, който търси думи, започващи с главна буква. Резултатът е масив с един елемент - "JavaScript".
- Заместване на всички запетаи в текст с точки:
const text = "This is a list, separated by commas.";
const regex = /,/g;
const replacedText = text.replace(regex, ".");
console.log(replacedText);
В този пример използваме регулярния израз , и метода replace() за да заместим всички запетаи в текста с точки. Резултатът е новият текст "This is a list. separated by commas.".
- Валидиране на имейл адрес:
const email = "[email protected]";
const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
const isValidEmail = regex.test(email);
console.log(isValidEmail);
В този пример използваме регулярния израз /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
за да проверим дали даден низ е валиден имейл адрес. Методът test() връща true, ако низът е валиден имейл адрес.
Тези примери са само малка част от това, което можете да направите с регулярни изрази в JavaScript.
- Търсене на всички думи в текст, които завършват на "ing":
const text = "Learning JavaScript is fun and challenging.";
const regex = /\b\w+ing\b/g;
const matches = text.match(regex);
console.log(matches);
В този пример използваме регулярния израз \b\w+ing\b, който търси думи в текст, завършващи на "ing". Резултатът е масив с два елемента - "Learning" и "challenging".
- Извличане на всички URLs от текст:
const text = "Check out this awesome website: https://www.example.com";
const regex = /https?:\/\/[\w\-\.]+\.\w{2,}(\/[\w\-\.\/\?\%\&\=]*)?/g;
const matches = text.match(regex);
console.log(matches);
В този пример използваме регулярния израз /https?:\/\/[\w\-\.]+\.\w{2,}(\/[\w\-\.\/\?\%\&\=]*)?/
, който търси URLs в текст. Резултатът е масив с един елемент - "https://www.example.com".
- Заместване на всички HTML тагове в текст с празен низ:
const text = "<p>This is some <b>bold</b> text.</p>";
const regex = /<[^>]+>/g;
const replacedText = text.replace(regex, "");
console.log(replacedText);
В този пример използваме регулярния израз /<[^>]+>/
и метода replace()
за да заместим всички HTML тагове в текста с празен низ. Резултатът е новият текст "This is some bold text.".
Тези примери показват, че регулярните изрази в JavaScript могат да се използват за множество задачи, като търсене на думи, извличане на данни от текст, валидиране на входни данни и други.