Читаоци попут вас помажу у подршци МУО. Када обавите куповину користећи везе на нашем сајту, можда ћемо зарадити провизију за партнере. Опширније.

Регуларни изрази, популарно познати као „регек“ или „регекп“, су стрингови који описују образац претраге. Можете да користите регуларне изразе да проверите да ли стринг садржи одређени образац, издвојите информације из стринга и замените делове стринга новим текстом.

Научите основну синтаксу регуларних израза и како да их користите у ЈаваСцрипт-у.

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

Постоје два начина на која можете да креирате регуларни израз у ЈаваСцрипт-у: коришћење литерала регуларног израза и коришћење РегЕкп конструктор.

Литерал регуларног израза се састоји од обрасца затвореног између косих цртица, праћеног опционом заставицом.

На пример:

// Без заставе
конст регекЕкпрессион_1 = /pattern/

// Са заставом
конст регекЕкпрессион_2 = /pattern/застава

Ознака је опциони параметар који можете додати регуларном изразу да бисте изменили његово понашање. На пример:

instagram viewer
конст регекФлаг = /the/g;

Тхе г флаг означава да израз треба да одговара свим појављивањима, а не само првим.

Такође можете креирати регуларни израз користећи РегЕкп конструктор. На пример:

конст регекЕкпрессион = НоваРегЕкп("Шаблон", "г");

Тхе РегЕкп конструктор узима два параметра: образац—стринг или литерал регуларног израза—и заставу(е).

Постоје две прилично уобичајене заставице које ћете користити са регуларним изразом у ЈаваСцрипт-у:

  • г: Глобална заставица чини да регуларни израз одговара свим појављивањима шаблона у датом низу уместо једном појављивању.
  • и: Ознака која не разликује велика и мала слова чини да регуларни израз занемари велика и мала слова шаблона и подудара се са великим и малим словима у датом низу.

Можете користити заставице заједно у једном изразу било којим редоследом. На пример:

конст регекЕкпрессион = НоваРегЕкп("Шаблон", "ги");

Овај израз ће одговарати свим појављивањима „узорка“, без обзира на случај.

У регуларним изразима, одређени знакови, познати као метазнакови, имају посебна значења. Можете их користити за подударање са одређеним типовима знакова или образаца.

Ево неких од најчешће коришћених метакарактера и њихових значења:

  • џокер знак (.): Овај знак одговара било ком појединачном знаку осим новог реда. То је користан алат за упаривање образаца са непознатим ликовима.
  • Звезда Клеене (*): Овај знак одговара нула или више појављивања претходног знака или групе. Омогућава да се претходни знак или група појави било који број пута у низу, укључујући нулу.
  • Опциони карактер (?): Овај знак одговара нули или једном појављивању претходног знака или групе.
  • Сидро почетка линије (^): Овај знак одговара само почетку реда или стринга.
  • Сидро на крају реда ($): Овај знак одговара крају реда или стринга.
  • Скуп знакова/класа ([]): Скуп знакова одговара било ком карактеру из скупа знакова у низу. Дефинишете их помоћу угластих заграда [] и можете одредити скуп фиксних знакова, специјалних знакова или одређених група знакова.
  • Наизменични лик (|): Овај знак се поклапа са претходним или следећим знаком или групом. Ради слично као ОР ЈаваСцрипт оператор.
  • Групни карактер (()): Знак за груписање вам омогућава да групишете знакове или подизразе, примените операторе на њих као јединицу и контролишете редослед операција.

Тестирање стринга у односу на регуларни израз у ЈаваСцрипт-у

У ЈаваСцрипт-у можете тестирати стринг у односу на регуларни израз користећи неколико метода.

Овај одељак претпоставља да имате основно разумевање регуларних израза и образаца. Ако вам не одговара регуларни изрази, погледајте водич за почетнике за регуларне изразе први.

Тхе тест Метход

Тхе .тест() метода враћа логичку вредност која показује да ли се регуларни израз подудара са стрингом или не. Овај метод узима стринг за обављање претраге као аргумент. Посебно је корисно за једноставне провере.

На пример:

дозволити регек = /.com$/;
дозволити стр = "екампле.цом";
конзола.лог (регек.тест (стр)); // истина

Овај регуларни израз одговара стрингу који се завршава са „.цом“.

Тхе екец Метход

Тхе .екец() метода враћа низ који садржи одговарајући текст и све снимљене групе или нула ако не нађе подударање. Овај метод узима стринг за обављање претраге као аргумент. Користан је за сложеније регуларне изразе.

На пример:

дозволити регек = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
дозволити стр = "123-456-7890";
дозволити резултат = регек.екец (стр);

ако (резултат !== нула) {
конзола.Пријава(`${резулт[0]} је важећи број телефона`);
} друго {
конзола.Пријава("Неважећи број телефона");
}

Регуларни израз изнад одговара стрингу који почиње са опционим "(", три цифре и опционо ")". Затим тражи опциони "-", ".", или размак, праћен три цифре. Коначно тражи опциони "-", ".", или размак иза којег следе четири цифре на крају низа.

Овај регуларни израз одговара бројевима телефона у формату „(ккк) ккк-кккк“, „ккк-ккк-кккк“, „ккк.ккк.кккк“ или „ккк ккк кккк“.

Ако пронађе подударање, .екец() враћа низ који садржи подударни текст и све снимљене групе (дефинисане заградама). Он ће укључити сваку групу као додатни елемент у низу који враћа. Ово вам омогућава да приступите одређеним деловима текста који се подудара, што вам може помоћи да извучете информације из низа.

Метод замене

Тхе .заменити() метода тражи подударање између регуларног израза и стринга и замењује подударни текст наведеним заменским текстом. Ово је метода стринг објеката и узима регуларни израз и замену стринг као аргументе.

На пример:

дозволити стринг = „Брза смеђа лисица прескаче лењог пса.;
дозволити израз = /The/gi;
дозволити невСтринг = стринг.реплаце (израз, "а");
конзола.лог (невСтринг); // „брза смеђа лисица прескаче лењог пса“.

Овај пример назива заменити() метода на низ променљива, прослеђујући регуларни израз, израз. Регуларни израз ће се подударати са свим појављивањима „Тхе“ у низу, без обзира на случај. Позив методе замене упућује га да свако појављивање замени стрингом „а“.

Разматрање перформанси при коришћењу регуларних израза

Иако регуларни изрази помажу у подударању и манипулацији стринговима, они такође могу бити скупи у смислу перформанси. Учинити обрасце што је могуће специфичнијим и држати их једноставним од виталног је значаја да би они били ефикасни.