match()
方法的语法为:
str.match(regexp)
在这里, str是一个字符串。
match()参数
match()
方法采用:
- 正则表达式 -正则表达式对象(参数是隐式转换为
RegExp
,如果它是一个非RegExp
对象)
注意:如果不提供任何参数, match()
将返回[""]
。
从match()返回值
- 返回一个包含匹配项的
Array
,每个匹配项一项。 - 如果找不到匹配项,则返回
null
。
示例1:使用match()
const string = "I am learning JavaScript not Java.";
const re = /Java/;
let result = string.match(re);
console.log("Result of matching /Java/ :");
console.log(result);
const re1 = /Java/g;
let result1 = string.match(re1);
console.log("Result of matching /Java/ with g flag:")
console.log(result1);
输出
Result of matching /Java/ :
[
'Java',
index: 14,
input: 'I am learning JavaScript not Java.',
groups: undefined
]
Result of matching /Java/ with g flag:
[ 'Java', 'Java' ]
在这里,我们可以看到,不使用g
标志,结果仅获得第一个匹配项,但包含诸如索引,输入和组之类的详细信息。
注意 :如果正则表达式不包含g
标志,则str.match()
将仅返回类似于RegExp.exec()
的第一个匹配项。返回的项目还将具有以下附加属性:
-
groups
命名捕获组的对象,具有键作为名称,值作为捕获的匹配项。 -
index
查找结果的搜索索引。 -
input
-搜索字符串的副本。
示例2:匹配字符串的节
const string = "My name is Albert. YOUR NAME is Soyuj.";
// expression matches case-insensitive "name is"+ any alphabets till period (.)
const re = /name\sis\s[a-zA-Z]+\./gi;
let result = string.match(re);
console.log(result); // [ 'name is Albert.', 'NAME is Soyuj.' ]
// using named capturing groups
const re1 = /name\sis\s(?[a-zA-Z]+)\./i;
let found = string.match(re1);
console.log(found.groups); // {name: "Albert"}
输出
[ 'name is Albert.', 'NAME is Soyuj.' ]
{name: "Albert"}
在这里,我们使用了正则表达式来匹配字符串的特定部分。我们还可以使用上面显示的语法捕获比赛中的某些组。
推荐读物: JavaScript String matchAll()