Квантификаторы в регулярных выражениях JavaScript

В этом руководстве вы узнаете, как использовать квантификаторы в регулярных выражениях JavaScript для сопоставления количества экземпляров символа, группы или класса символов в строке.

Квантификаторы соответствуют количеству экземпляров символа, группы или класса символов в строке.

Количество

Точное количество {n}

Число в фигурных скобках {n} является простейшим квантификатором. Когда вы добавляете его к символу или классу символов, он указывает, сколько символов или классов символов вы хотите сопоставить.

Например, регулярное выражение /\d{4}/ соответствует четырехзначному числу. Это то же самое, что и /\d\d\d\d/ :

let str = 'ECMAScript 2020';
let re = /\d{4}/;

let result = str.match(re);

console.log(result);

Выход:

["2020"]

Диапазон {n,m}

Диапазон соответствует символу или классу символов от n до m раз.

Например, чтобы найти числа, состоящие из двух, трех или четырех цифр, вы используете регулярное выражение /\d{2,4}/g :

let str = 'The official name of ES11 is ES2020';
let re = /\d{2,4}/g;

let result = str.match(re);
console.log(result);

Выход:

["11", "2020"]

Поскольку верхний предел не является обязательным, {n,} ищет последовательность n или более раз. Например, регулярное выражение /\d{2,}/ будет соответствовать любому числу, состоящему из двух и более цифр.

let str = 'The official name of ES6 is ES2015';
let re = /\d{2,}/g;

let result = str.match(re);
console.log(result);

Выход:

["2015"]

В следующем примере регулярное выражение /\d{1,}/g используется для сопоставления любых чисел, содержащих одну или несколько цифр в телефонном номере:

let numbers = '+1-(408)-555-0105'.match(/\d{1,}/g);
console.log(numbers);

Выход:

["1", "408", "555", "0105"]

Сокращения

+

Квантификатор {1,} означает один или несколько, которые имеют сокращенное обозначение +. Например, \d+ ищет числа:

let phone = "+1-(408)-555-0105";
let result = phone.match(/\d+/g);

console.log(result);

Выход:

["1", "408", "555", "0105"]

?

Квантификатор ? означает ноль или единицу. Это то же самое, что и {0,1}. Например, /colou?r/ будет соответствовать и color, и colour :

let str = 'Is this color or colour?';
let result = str.match(/colou?r/g);

console.log(result);

Выход:

["color", "colour"]

*

Квантификатор * означает ноль или более. Это то же самое, что и {0,}. В следующем примере показано, как использовать квантификатор * для сопоставления строки Java, за которой следует любой символ слова:

let str = 'JavaScript is not Java';
let re = /Java\w*/g

let results = str.match(re);

console.log(results);

Выход:

["JavaScript", "Java"]

Мы часто используем квантификаторы для формирования сложных регулярных выражений. Ниже показаны некоторые примеры регулярных выражений, включающих квантификаторы:

  • Целые числа: /^\d+$/
  • Десятичные числа: /^\d*.\d+$/
  • Целые и десятичные числа: /^\d*(.\d+)?$/
  • Отрицательные, положительные целые числа и десятичные числа: /^-?\d*(.\d+)?$/

Заключение

В следующей таблице перечислены квантификаторы:

квантификаторОписание
*Совпадение ноль или более раз.
+Совпадение один или несколько раз.
?Совпадение ноль или один раз.
{ п }Совпадение ровно n раз.
{ п ,}Совпадение не менее n раз.
{ п , м }Совпадение от n до m раз.
Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript