Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Регулярните изрази, популярни като "regex" или "regexp", са низове, които описват модел на търсене. Можете да използвате регулярни изрази, за да проверите дали даден низ съдържа конкретен модел, да извлечете информация от низ и да замените части от низ с нов текст.

Научете основния синтаксис на регулярните изрази и как да ги използвате в JavaScript.

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

Има два начина, по които можете да създадете регулярен израз в JavaScript: използване на литерал на регулярен израз и използване на RegExp конструктор.

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

Например:

// Без флаг
конст регулярен израз_1 = /pattern/

// С флаг
конст регулярен израз_2 = /pattern/знаме

Флагът е незадължителен параметър, който можете да добавите към регулярен израз, за ​​да промените поведението му. Например:

instagram viewer
конст regexFlag = /the/g;

The ж флаг показва, че изразът трябва да съответства на всички срещания, а не само на първия.

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

конст регулярен израз = новRegExp("Модел", "g");

The RegExp конструкторът приема два параметъра: шаблон - низ или литерал на регулярен израз - и флаг(ове).

Има два доста често срещани флага, които ще използвате с регулярен израз в JavaScript:

  • ж: Глобалният флаг кара регулярния израз да съвпада с всички срещания на шаблона в дадения низ вместо с едно срещане.
  • аз: Флагът за нечувствителен към главни и малки букви кара регулярния израз да пренебрегва регистъра на главните и малките букви в дадения низ.

Можете да използвате флагове заедно в един израз в произволен ред. Например:

конст регулярен израз = новRegExp("Модел", "ги");

Този израз ще съответства на всички срещания на „Образец“, независимо от регистъра.

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

Ето някои от най-често използваните метазнаци и техните значения:

  • Заместващият знак (.): Този знак съвпада с всеки отделен знак, с изключение на нов ред. Това е полезен инструмент за съпоставяне на шаблони с непознати знаци.
  • Звездата Клийн (*): Този символ съответства на нула или повече срещания на предходния знак или група. Той позволява на предшестващия знак или група да се появи произволен брой пъти в низа, включително нула.
  • Незадължителният знак (?): Този символ съответства на нула или едно срещане на предходен знак или група.
  • Начало на линия котва (^): Този знак съвпада само с началото на ред или низ.
  • Край на линия котва ($): Този символ съответства на края на ред или низ.
  • Набор от знаци/клас ([]): Набор от знаци съответства на всеки знак от набор от знаци в низ. Вие ги определяте с квадратни скоби [] и можете да зададете набор от фиксирани знаци, специални знаци или определени групи знаци.
  • Алтернативен знак (|): Този символ съответства на предходния или следващия знак или група. Работи подобно на операционната JavaScript оператор.
  • Групиращ знак (()): Знакът за групиране ви позволява да групирате знаци или подизрази, да прилагате оператори към тях като единица и да контролирате реда на операциите.

Тестване на низ срещу регулярен израз в JavaScript

В JavaScript можете да тествате низ срещу регулярен израз, като използвате няколко метода.

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

Методът на теста

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

Например:

позволявам регулярен израз = /.com$/;
позволявам str = "example.com";
конзола.log (regex.test (str)); // вярно

Този регулярен израз съответства на низ, който завършва с ".com".

Методът exec

The .exec() метод връща масив, съдържащ съответстващия текст и всички уловени групи или нула ако не намери съвпадение. Този метод приема като аргумент низ за извършване на търсенето. Полезно е за по-сложни регулярни изрази.

Например:

позволявам регулярен израз = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
позволявам str = "123-456-7890";
позволявам резултат = regex.exec (str);

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

Регулярният израз по-горе съответства на низ, който започва с незадължителен "(", три цифри и незадължителен ")". След това търси незадължителен "-", ".“ или интервал, последван от три цифри. Най-накрая търси незадължителен "-", ".", или интервал, последван от четири цифри в края на низа.

Този регулярен израз съответства на телефонни номера във формат „(xxx) xxx-xxxx“, „xxx-xxx-xxxx“, „xxx.xxx.xxxx“ или „xxx xxx xxxx“.

Ако намери съвпадение, .exec() връща масив, съдържащ съответстващия текст и всички уловени групи (дефинирани от скоби). Той ще включва всяка група като допълнителен елемент в масива, който връща. Това ви позволява да получите достъп до определени части от съответстващия текст, което може да ви помогне да извлечете информация от низ.

Методът на замяна

The .replace() методът търси съвпадение между регулярен израз и низ и заменя съвпадащия текст с определен заместващ текст. Това е метод на низови обекти и приема регулярен израз и заместващ низ като аргументи.

Например:

позволявам низ = "Бързата кафява лисица прескача мързеливото куче.";
позволявам израз = /The/gi;
позволявам newString = string.replace (израз, "а");
конзола.log (нов низ); // "бърза кафява лисица прескача мързеливо куче."

Този пример нарича замени() метод на низ променлива, предаваща регулярния израз, изразяване. Регулярният израз ще съответства на всички срещания на „The“ в низа, независимо от регистъра. Извикването на метода replace го инструктира да замени всяко срещане с низа „a“.

Съображения за производителност при използване на регулярни изрази

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