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