正则表达式:量词

摘要:在本教程中,您将学习使用量词匹配字符串中的多个字符、组或字符类实例。

量词指定了在输入字符串中必须出现多少个字符、组或字符类实例,才能找到匹配项。

数量

确切数量 {n}

花括号中的数字{n}是最简单的量词。当您将其附加到字符或字符类时,它指定您要匹配的字符或字符类的数量。

例如,正则表达式/\d{4}/匹配一个四位数字。它与/\d\d\d\d/相同

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

let result = str.match(re);

console.log(result);Code language: JavaScript (javascript)

输出

['2020', index: 11, input: 'ECMAScript 2020', groups: undefined]Code language: JavaScript (javascript)

范围 {n,m}

该范围匹配nm次之间的字符或字符类。

例如,要查找具有两位数、三位数或四位数的数字,可以使用正则表达式/\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);
Code language: JavaScript (javascript)

输出

["11", "2020"]Code language: JavaScript (javascript)

因为上限是可选的,所以{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);
Code language: JavaScript (javascript)

输出

["2015"]Code language: JavaScript (javascript)

以下示例使用正则表达式/\d{1,}/g匹配电话号码中具有一个或多个数字的任何数字

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

输出

["1", "408", "555", "0105"]
Code language: JavaScript (javascript)

简写

+

量词{1,}表示一个或多个,其简写为+。例如,\d+搜索数字

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

console.log(result);
Code language: JavaScript (javascript)

输出

["1", "408", "555", "0105"]Code language: JavaScript (javascript)

?

量词?表示零或一。它与{0,1}相同。例如,/colou?r/将匹配colorcolour

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

console.log(result);Code language: JavaScript (javascript)

输出

["color", "colour"]Code language: JavaScript (javascript)

*

量词*表示零或多个。它与{0,}相同。以下示例显示如何使用量词*匹配字符串Java后跟任何单词字符

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

let results = str.match(re);
console.log(results);
Code language: JavaScript (javascript)

输出

["JavaScript", "Java"]
Code language: JavaScript (javascript)

我们经常使用量词来形成复杂的正则表达式。以下是包含量词的正则表达式示例

  • 整数:/^\d+$/
  • 小数:/^\d*.\d+$/
  • 整数和小数:/^\d*(.\d+)?$/
  • 负数、正数整数和十进制数:/^-?\d*(.\d+)?$/

摘要

下表列出了量词

量词描述
*匹配零次或多次。
+匹配一次或多次。
?匹配零次或一次。
{ n }正好匹配 n 次。
{ n ,}至少匹配 n 次。
{ n , m }nm 次之间匹配。
本教程对您有帮助吗?