В этом руководстве вы узнаете, как использовать квантификаторы в регулярных выражениях 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 раз. |
