String.prototype.match()
(也称为:字符串的匹配方法)可以允许您关闭字符串或设置条件,如果一个字符串或任何数据匹配。
首先是语法,然后是解释:
1let newArray = string.match(condition);
术语
字符串 match()
方法将返回一个数组,其中对应的项目来自在字符串中找到的提供的 正常表达式
。
请记住,当所有条件匹配时,这些结果将存储在新的 ** 数组中。
举以下例子:
1const intro = "Hello Alligators, Hello Devs, how are you?"
2
3const regex = /Hello/g;
4
5const greeting = intro.match(regex);
上面的结果会给我们一个类似的数组:你好
,你好
,如果我们知道我们想要匹配的确切字符串,那么这很好,但动态内容或实际使用案例呢?
以下是一個簡單的例子,在一個字符串中找到重複的字母:
1const str = 'See you later, Alligator! Not so soon baboon!';
2const matches = str.match(/([a-z])\1+/gi);
3
4console.log('H' + matches.join(""));
5// "Heelloooo"
虽然这些都是简单的例子,你越深入地了解常规表达式,这个字符串方法就越强大。
比赛方法有3种模式...
- 1st:如果为您的 RegEx 使用了
g
(全球)旗,则所有结果将存储在一个数组中 - 2nd:如果没有使用过
g
旗,那么第一个匹配将返回一个数组,其中包含第一个匹配表达式的键/值共享索引,然后是完整输入,然后是捕捉组。
1let newYear = "Happy New Year";
2let results = newYear.match(/new/i);
3// [ 'New', index: 6, input: 'Happy New Year', groups: undefined ]
- 3rd:如果没有匹配,该方法会返回
null
,或用以下代码返回一个空数组:
1let results = newYear.match(regex) || [];
结论
匹配是一种有趣的小方法,可以用很多创意的方式,例如从段落中提取关键字或替换单词,如果条件匹配了regex。