使用实例来详解 ES10 中的 String.match() 方法

使用实例来详解 ES10 中的 String.match() 方法

String.match() 是 JavaScript 内置的字符串方法,用于在字符串中查找匹配的文本并返回匹配结果。它接受一个正则表达式作为参数,也可以是一个字符串,返回一个数组,其中包含了所有匹配的字符串。在 ES10(即 ECMAScript 2019)中,这个方法有了一些新的功能和变化。

语法

String.match(regexp)

regexp 可以是一个正则表达式或者一个字符串。如果是字符串,它会被转换成一个等价的正则表达式。

返回的匹配结果是一个数组,其中包含了所有匹配的字符串。如果没有匹配到任何字符串,返回值将是 null

示例

const str = 'hello world';

// 使用正则表达式进行匹配
const matchResult = str.match(/o/g);
console.log(matchResult); // ['o', 'o']

// 使用字符串进行匹配
const matchResult2 = str.match('o');
console.log(matchResult2); // ['o']

在这个示例中,我们首先使用 /o/g 这个正则表达式来查找字符串 str 中所有的字母 “o”,结果是一个数组 ['o', 'o']。接着我们使用字母 “o”(即字符串 'o')作为参数来调用 match() 方法,返回的结果也是一个数组 ['o'],包含了字符串 str 中的第一个 “o”。

ES10 中的新特性

在 ES10 中, String.match() 方法引入了两个新的参数,可以更方便地控制返回结果的格式和内容。

1. 新参数:可选的第二个参数 startIndex

String.match(regexp, startIndex)

startIndex 是一个可选的整数参数,用于指定字符串开始查找的位置。如果不指定此参数,则从字符串的开头开始查找。

例如:

const str = 'hello world';

// 从第四个字符 "o" 开始查找
const matchResult = str.match(/o/g, 4);
console.log(matchResult); // ['o']

// 从开头查找,等同于没有传入 startIndex
const matchResult2 = str.match(/o/g, 0);
console.log(matchResult2); // ['o', 'o']

注意,startIndex 的值必须是非负整数。如果传入负数或者不是整数的值,会自动转换成 0。

2. 新特性:返回解构对象

在 ES10 中, String.match() 方法可以返回一个解构对象,其中包含了匹配结果的详细信息。这个对象包含了以下几个属性:

  • input:原始字符串,即调用 match() 的那个字符串;
  • groups:从正则表达式中提取的命名捕获组的信息;
  • index:第一个匹配项在原始字符串中的位置;
  • length:匹配结果数组的长度。

以下是一个使用解构对象的示例:

const str = 'Hello World!';

const matchObj = str.match(/^(\w+)\s(\w+)$/);

const { input, groups, index, length } = matchObj;
console.log(input); // 'Hello World!'
console.log(groups); // {1: 'Hello', 2: 'World'}
console.log(index); // 0
console.log(length); // 3

在这个示例中,我们先定义了一个正则表达式,用于匹配以单词开头的句子。接着我们调用 match() 方法,并将返回结果解构到变量 matchObj 中。最后我们访问了解构对象中的各个属性,可以发现它包含了匹配结果的所有信息:原始字符串、命名捕获组信息、首个匹配项的位置和数组长度。

总结

String.match() 方法是 JavaScript 中一个强大且常用的字符串方法,可以用于查找字符串中的文本内容。在 ES10 中, String.match() 方法引入了两个新参数和返回解构对象的功能,使其更加灵活和易用。

学习使用 String.match() 方法需要掌握正则表达式的语法和常用方法,例如字符类、重复次数、分组、捕获、前后查找等等。同时还需要熟悉各种正则表达式方法的特点和用法,例如 test()replace()exec() 等等。掌握这些知识可以让你更加娴熟地使用 String.match() 方法,并能够处理大量复杂的字符串操作。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65b2510cadd4f0e0ffb825ea