Регулярни изрази в JavaScript: Въведение

Последна актуализация: 5 де Ноември 2025
Автор: TecnoDigital
Регулярни изрази в JavaScript

Добре дошли в това пълно ръководство за регулярни изрази в JavaScript! В тази статия ще разгледаме подробно какво представляват регулярните изрази, как се използват в JavaScript и как могат да ви помогнат да опростите и оптимизирате кода си. От основите до практическите примери, ние ще покрием всичко, което трябва да знаете, за да започнете да се възползвате максимално от регулярните изрази във вашите JavaScript проекти. Така че да започваме!

Въведение в регулярните изрази

Регулярните изрази са модели за търсене, използвани за намиране и манипулиране на текст в символни низове. Те се състоят от комбинация от буквални знаци и метазнаци, които определят специфични правила за намиране на съвпадения в текст. Тези правила могат да включват търсене на конкретни знаци, диапазони от знаци, повторения, алтернативи и много повече.

В JavaScript регулярните изрази се създават с помощта на класа RegExp или използвайки литерала /patrón/. Шаблонът е самият регулярен израз, който е ограден между наклонени черти. Нека да разгледаме един прост пример:

const regex = /hola/;

 

В този пример създадохме регулярен израз, който ще търси низа „здравей“ в текст. След като имаме основно разбиране за това какво представляват регулярните изрази, нека проучим някои ключови концепции и усъвършенствани техники за работа с тях в JavaScript.

Основен синтаксис на регулярните изрази

Регулярните изрази в JavaScript са съставени от няколко ключови елемента, които ни позволяват да дефинираме по-сложни модели на търсене. Тези елементи включват буквални знаци, метасимволи, класове знаци, квантори, котви и други. Нека да разгледаме някои примери за тези елементи:

Буквални знаци

Буквалните знаци са тези, които се търсят, както се появяват в текста. Например регулярният израз /hola/ ще търси последователността от знаци „здравей“ в текстов низ. Важно е да се отбележи, че регулярните изрази са чувствителни към главни и малки букви, така че /hola/ няма да съответства на „Hello“ или „HELLO“.

Метазнаци

Метасимволите са специални знаци, които имат специално значение в регулярните изрази. Например метасимволът . Използва се за представяне на всеки знак с изключение на нов ред. Друг общ метасимвол е ^, който се използва за указване на началото на текстов низ. Например регулярният израз /^hola/ ще съответства на всеки текстов низ, който започва с "здравей".

Класове на знаци

Класовете знаци се използват за търсене на всеки знак в рамките на определен набор. Например регулярният израз /[aeiou]/ ще съответства на всяка гласна в текстов низ. Възможно е също да се използват диапазони от символи в класове от знаци. Например регулярният израз /[a-z]/ ще съответства на всяка малка буква.

Квантори

Кванторите се използват за определяне на броя на срещанията на даден елемент в регулярен израз. Например, кванторът * показва, че предишният елемент може да се появи нула или повече пъти. Кванторът + показва, че предходният елемент трябва да се появи един или повече пъти. Например регулярният израз /a+/ ще съответства на едно или повече "a" в текстов низ.

Котви

Котвите се използват за указване на позицията на съвпадение в текстов низ. Например котвата \b съвпада с граница на дума. Например регулярният израз /bholab/ ще съответства само на думата "здравей" като a пълна дума, без съвпадение на по-дълги думи, които съдържат „здравей“ като част от тях.

Това са само няколко примера за основния синтаксис на регулярните изрази в JavaScript. С напредването на тази статия ще разгледаме по-сложни концепции и техники за работа с регулярни изрази в JavaScript.

Основно търсене на съвпадение

Една от най-често срещаните операции, извършвани с регулярни изрази, е търсенето на съвпадения в текстов низ. В JavaScript можем да използваме метода search() за намиране на първото съвпадение на регулярен израз в текстов низ. Да видим пример:

const texto = "¡Hola, mundo!";
const regex = /mundo/;
const indice = texto.search(regex);
console.log(indice); // 7

В този пример сме използвали метода search() за да намерите първото съвпадение на регулярния израз /mundo/ в текстовия низ "Здравей, свят!" Методът search() връща индекса на първото намерено съвпадение или -1, ако не е намерено съвпадение.

В допълнение към метода search(), JavaScript предоставя и други полезни методи за работа с регулярни изрази, като напр match(), replace(), split() y test(). Всеки от тези методи има своя собствена цел и може да се използва според вашите специфични нужди.

Използване на модификатори и флагове

В JavaScript регулярните изрази могат да съдържат модификатори и флагове, които позволяват по-гъвкави и персонализирани търсения. Модификаторите се добавят в края на регулярен израз и променят поведението му. Някои от най-често срещаните модификатори са:

аз (нечувствителен)

Модификаторът i се използва за извършване на търсене без значение за главни и малки букви. Например регулярният израз /hola/i ще съответства както на „здравей“, така и на „Здравей“ или „ЗДРАВЕЙ“.

g (глобален)

Модификаторът g Използва се за извършване на глобално търсене на целия текстов низ, вместо да се спира при първото намерено съвпадение. Например регулярният израз /a+/g ще съответства на всички срещания на едно или повече "a" в текстов низ.

  Как да контролирате луковиците на Туя локално в Home Assistant

m (многоредов)

Модификаторът m Използва се за извършване на търсене на няколко реда в рамките на текстов низ. Например регулярният израз /^hola/m ще съответства на думата "здравей" в началото на всеки ред в текстов низ.

В допълнение към модификаторите, JavaScript също позволява използването на флагове в регулярни изрази. Флаговете се добавят след втората наклонена черта при създаване на регулярен израз с помощта на класа RegExp. Някои от най-често срещаните флагове са:

аз (нечувствителен)

Като модификатора i, знамето i извършва търсене без значение за главни и малки букви. Например регулярният израз new RegExp("hola", "i") ще съответства както на „здравей“, така и на „Здравей“ или „ЗДРАВЕЙ“.

g (глобален)

Като модификатора g, знамето g извършва глобално търсене на целия текстов низ. Например регулярният израз new RegExp("a+", "g") ще съответства на всички срещания на едно или повече "a" в текстов низ.

m (многоредов)

Като модификатора m, знамето m извършва търсене на няколко реда в рамките на текстов низ. Например регулярният израз new RegExp("^hola", "m") ще съответства на думата "здравей" в началото на всеки ред в текстов низ.

Използването на модификатори и флагове в регулярните изрази на JavaScript може да бъде много полезно за приспособяване на търсенията към различни случаи и специфични изисквания. Експериментирайте с тях и открийте как можете да се възползвате максимално от тези функции в кода си.

Метасимволи и специални знаци

Метасимволите и специалните знаци са ключови елементи в регулярните изрази, които ни позволяват да извършваме по-мощни и гъвкави търсения. Вече споменахме някои метазнаци, като напр . y ^, но има много други, които можете да използвате във вашите регулярни изрази. Нека да разгледаме някои от най-често срещаните метасимволи и специални знаци:

. (точка)

Метасимволът . Използва се за представяне на всеки знак с изключение на нов ред. Например регулярният израз /h.t/ ще съответства на „шапка“, „горещо“, „хит“ и всяка друга дума от три букви, която започва с „h“ и завършва с „t“.

\ (обратна наклонена черта)

Обратната наклонена черта се използва за екраниране на специални знаци в регулярен израз. Например, ако искате да търсите литерална точка в текстов низ, трябва да го екранирате, като използвате обратната наклонена черта. Регулярният израз /www\.google\.com/ ще съответства на текстовия низ „www.google.com“.

\d (цифра)

Метасимволът \d се използва за търсене на всяка цифра от 0 до 9. Например регулярният израз /\d+/ ще съответства на всяко едно или повече цифрено число в текстов низ.

\w (буквено-цифров знак)

Метасимволът \w се използва за търсене на всеки буквено-цифров знак (главни и малки букви, цифри и долна черта). Например регулярният израз /\w+/ ще съответства на всяка дума от един или повече буквено-цифрови знака в текстов низ.

Това са само няколко примера за метазнаци и специални знаци, които можете да използвате във вашите регулярни изрази. Когато се запознаете по-добре с регулярните изрази в JavaScript, ще откриете голямо разнообразие от опции за прецизиране на вашите търсения и текстови манипулации.

Символни класове и диапазони

Символните класове са друг ключов елемент в регулярните изрази, които ни позволяват да търсим всеки знак в конкретен набор. В JavaScript можем да използваме скоби [] за определяне на клас символи. Нека да разгледаме някои примери за класове и диапазони на знаци:

[aeiou]

Класът на характера [aeiou] ще съответства на всяка гласна в текстов низ. Например регулярният израз /[aeiou]/ ще съответства на "a", "e", "i", "o" или "u" в текстов низ.

[az]

Обхватът на знаците [a-z] ще съответства на всяка малка буква в английската азбука. Например регулярният израз /[a-z]/ ще съответства на всяка малка буква в текстов низ.

[0-9]

Обхватът на знаците [0-9] ще съответства на всяка цифра от 0 до 9 в текстов низ. Например регулярният израз /[0-9]/ ще съответства на всяко едноцифрено число.

[A-Z-z]

Класът на характера [A-Za-z] ще съответства на всяка главна или малка буква в английската азбука. Например регулярният израз /[A-Za-z]/ ще съответства на всяка буква в текстов низ.

Класовете и диапазоните на знаци ни позволяват да дефинираме специфични набори от знаци, които да търсим в регулярен израз. Използвайте ги, за да приспособите вашите търсения към вашите конкретни нужди и ограничения.

Квантори и повторения

Кванторите и повторенията са ключови елементи в регулярните изрази, които ни позволяват да посочим броя на срещанията на елемент в текстов низ. Нека да разгледаме някои от най-често срещаните квантификатори в JavaScript:

* (звездичка)

Кванторът * показва, че предишният елемент може да се появи нула или повече пъти. Например регулярният израз /a*/ ще съответства на нула или повече 'a' в текстов низ.

+ (още)

Кванторът + показва, че предходният елемент трябва да се появи един или повече пъти. Например регулярният израз /a+/ ще съответства на едно или повече "a" в текстов низ.

  Овладяване на тестването на софтуерни модули

? (въпрос)

Кванторът ? показва, че предишният елемент може да се появи нула или един път. Например регулярният израз /colou?r/ ще съответства както на „цвят“, така и на „цвят“.

{n} (точно n пъти)

Кванторът {n} показва, че предишният елемент трябва да се появи точно n пъти. Например регулярният израз /a{3}/ ще съответства точно на три "a" в текстов низ.

{n,} (поне n пъти)

Кванторът {n,} показва, че предишният елемент трябва да се появи поне n пъти. Например регулярният израз /a{2,}/ ще съответства на две или повече 'a' в текстов низ.

{n,m}

Кванторът {n,m} показва, че предишният елемент трябва да се появи поне n пъти и най-много m пъти. Например регулярният израз /a{2,4}/ ще съответства на две, три или четири "а" в текстов низ.

Това са само няколко примера за квантори, които можете да използвате във вашите регулярни изрази. Кванторите ни позволяват да уточним модели на повторение в текстови търсения и манипулации, което улеснява извличането на специфична информация от текстови низове.

Котви и граници на думи

Котвите и границите на думите са елементи, които ни позволяват да посочим позицията на съвпадение в рамките на текстов низ. Тези елементи са особено полезни, когато искаме да търсим цели думи или да се уверим, че съвпадението е в началото или края на ред. Нека да разгледаме някои примери за котви и граници на думи:

\b (граница на думата)

Ограничението на думите \b съответства на границата между буквено-цифров знак и небуквено-цифров знак. Например регулярният израз /\bjavascript\b/ ще съответства само на думата „javascript“ като пълна дума, без да съответства на по-дълги думи, които съдържат „javascript“ като част от тях.

^ (начало на ред)

Характерът ^ Използва се за обозначаване на началото на ред в текстов низ. Например регулярният израз /^hola/ ще съответства на думата "здравей" в началото на всеки ред в текстов низ.

$ (края на реда)

Характерът $ Използва се за обозначаване на края на ред в текстов низ. Например регулярният израз /mundo$/ ще съответства на думата "свят" в края на всеки ред в текстов низ.

\A (начало на текст)

Характерът \A Използва се за указване на началото на целия текст в текстов низ, а не само началото на ред. Например регулярният израз /^\AHola/ ще съответства на думата „Здравей“ в началото на целия текст.

\Z (край на текста)

Характерът \Z се използва за обозначаване на края на целия текст в текстов низ, а не само края на ред. Например регулярният израз /Mundo\Z/ ще съответства на думата "Свят" в края на целия текст.

Котвите и границите на думите ни позволяват да търсим съвпадения на конкретни места в рамките на текстов низ, което може да бъде полезно в ситуации, в които искаме да гарантираме, че съвпадението е на конкретна позиция.

Групи и залавяния

Групите и прихващанията са разширени елементи в регулярните изрази, които ни позволяват да групираме подизрази и да ги улавяме за по-късна употреба. Нека да видим как работят групите и улавянията:

( ) (скоби)

Скобите са Те използват за групиране подизрази в регулярен израз. Например регулярният израз /(d{2})-(d{2})-(d{4})/ se използвани за търсене на дата във формат "дд-мм-гггг. Групите ( ) Те ни позволяват да улавяме отделно стойностите за деня, месеца и годината.

\1, \2, \3 (групови препратки)

Препратките към групи се използват за препратка към предварително заснети групи в регулярен израз. Например регулярният израз /(\w+) \1/ ще съпостави всяка дума, последвана от повторена същата дума. Например „здравей здравей“, „световен свят“ и т.н.

?: (група без прихващане)

Символът ?: Използва се за създаване на групи без прихващане. Тези групи се използват, когато искаме да групираме подизрази, но не искаме да уловим резултата. Например регулярният израз /https?:\/\/(?:www\.)?google\.com/ ще съответства както на „http://www.google.com“, така и на „https://google.com“, но ще улови само съответната част от URL адреса.

Групите и записите ни позволяват да структурираме и организираме регулярните си изрази по по-ефективен и четлив начин. Те също така предоставят възможност за записване на специфични стойности за по-късна употреба в нашите приложения.

Полезни методи за работа с регулярни изрази

JavaScript предоставя няколко полезни метода за работа с регулярни изрази. Тези методи ни позволяват да извършваме обичайни операции като търсене, замяна и разделяне на текстови низове с помощта на регулярни изрази. Нека да разгледаме някои от тези методи:

мач()

Методът match() Използва се за намиране на всички съвпадения на регулярен израз в текстов низ и връщане на масив с резултатите. Например:

const texto = "¡Hola, mundo!";
const regex = /o/g;
const coincidencias = texto.match(regex);
console.log(coincidencias); // ["o", "o"]

В този пример сме използвали метода match() за намиране на всички съвпадения на регулярния израз /o/g в текстовия низ "Здравей, свят!" Методът match() връща масив с всички намерени съвпадения.

  Пълно ръководство за Spring Framework: Подкрепа за Java разработка

замени ()

Методът replace() се използва за замяна на съвпадения на регулярен израз в текстов низ с нова стойност. Например:

const texto = "¡Hola, mundo!";
const regex = /mundo/;
const nuevoTexto = texto.replace(regex, "amigo");
console.log(nuevoTexto); // "¡Hola, amigo!"

В този пример сме използвали метода replace() за замяна на съответствието на регулярния израз /mundo/ в текстовия низ "Здравей, свят!" за думата "приятел". Методът replace() връща нов текстов низ с направените замествания.

разделяне ()

Методът split() се използва за разделяне на текстов низ в масив от поднизове, като се използва регулярен израз като разделител. Например:

const texto = "Hola,mundo,amigo";
const regex = /,/g;
const subcadenas = texto.split(regex);
console.log(subcadenas); // ["Hola", "mundo", "amigo"]

В този пример сме използвали метода split() за да разделите текстовия низ "Hello,world,friend" в масив от поднизове, като използвате регулярния израз /,/g като разделител. Методът split() връща масив с получените поднизове.

тест()

Методът test() Използва се за проверка дали регулярен израз има съвпадения в текстов низ. Методът се връща true ако има съвпадение и false иначе. Например:

const texto = "Hola, mundo!";
const regex = /mundo/;
const resultado = regex.test(texto);
console.log(resultado); // true

В този пример сме използвали метода test() за да проверите дали регулярният израз /mundo/ има съвпадения в текстовия низ "Hello, world!". Методът test() Върни true защото има съвпадение.

Това са само някои от най-често срещаните методи за работа с регулярни изрази в JavaScript. Всеки от тези методи има своя собствена цел и може да се използва според вашите специфични нужди. Експериментирайте с тях и открийте как могат да направят работата ви с регулярни изрази по-лесна и по-бърза.

Често задавани въпроси

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

Как да създадете регулярни изрази в JavaScript? Регулярните изрази в JavaScript се създават с помощта на класа RegExp или използвайки литерала /patrón/.

Каква е разликата между модификаторите и флаговете в регулярните изрази? Модификаторите се добавят в края на регулярен израз и променят поведението му. Флаговете се добавят след втората наклонена черта при създаване на регулярен израз с помощта на класа RegExp.

Каква е разликата между метода match() и метода test()? Методът match() Използва се за намиране на всички съвпадения на регулярен израз в текстов низ и връща масив с резултатите. Методът test() Използва се за проверка дали регулярен израз има съвпадения в текстов низ и връща булева стойност.

Как мога да заснема конкретни стойности с помощта на групи в регулярен израз? Групите ( ) в регулярен израз ви позволяват да уловите конкретни подизрази. След това можете да посочите тези групи, като използвате препратките \1, \2И др

Какви методи мога да използвам за работа с регулярни изрази в JavaScript? Някои полезни методи за работа с регулярни изрази в JavaScript са match(), replace(), split() y test(). Всеки от тези методи има своя собствена цел и може да се използва според вашите специфични нужди.

Заключение

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

Не забравяйте да практикувате и експериментирате с различни модели и случаи на използване, за да засилите разбирането и запознатостта си с регулярните изрази. Не се колебайте да използвате регулярни изрази, за да подобрите ефективността и качеството на вашия код!