使用实例来详解 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