Регулярни изрази (Regex)

Регулярни изрази (Regex)
Photo by Nik / Unsplash

Регулярните изрази са мощен инструмент за търсене и обработка на текст. В JavaScript те се използват за да проверявате дали низ от символи отговаря на даден шаблон.

Например, ако искате да проверите дали низът "JavaScript" се съдържа в друг низ, може да използвате следния регулярен израз:

/JavaScript/

Този регулярен израз ще търси точно това съчетание от символи в текста.

Можете да използвате регулярни изрази за да търсите и други видове съвпадения, като например:

  • Търсене на думи с определена малка или главна буква
  • Търсене на повтарящи се символи
  • Търсене на символи, които се срещат в определени места от низа (например, в началото или края на низа)
  • И много други.

Ето някои от основните конструкции за регулярните изрази в JavaScript:

  1. Литерален регулярен израз

Най-простият начин да създадете регулярен израз в 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 могат да се използват за множество задачи, като търсене на думи, извличане на данни от текст, валидиране на входни данни и други.