JavaScript 字符串 match() 方法
match()
方法返回将字符串与正则表达式匹配的结果。
示例
const message = "JavaScript是一种有趣的编程语言。";
// 检查消息中是否包含 '编程' 的正则表达式
const exp = /编程/;
// 检查 exp 是否存在于 message 中
let result = message.match(exp);
console.log(result);
/*
输出:[
'编程',
索引:20,
输入:'JavaScript是一种有趣的编程语言。',
组:undefined
]
*/
match() 语法
match()
方法的语法为:
str.match(regexp);
这里,str 是一个字符串。
match() 参数
match()
方法接受:
- regexp - 一个正则表达式对象(如果参数是非
RegExp
对象,则隐式转换为RegExp
)
注意: 如果你不提供任何参数,match()
返回 [""]
。
match() 返回值
- 返回一个包含匹配项的
数组
,每个匹配项一个元素。 - 如果没有找到匹配项,则返回
null
。
示例 1:使用 match()
const string = "我正在学习 JavaScript 不是 Java。";
const re = /Java/;
let result = string.match(re);
console.log("匹配 /Java/ 的结果:");
console.log(result);
const re1 = /Java/g;
let result1 = string.match(re1);
console.log("带有 g 标志的 /Java/ 匹配结果:");
console.log(result1);
输出
匹配 /Java/ 的结果:
[
'Java',
索引:14,
输入:'我正在学习 JavaScript 不是 Java。',
组:undefined
]
带有 g 标志的 /Java/ 匹配结果:
[ 'Java', 'Java' ]
在这里,我们可以看到,不使用 g
标志,我 们只得到第一个匹配的结果,但包含详细信息,如索引、输入和组。
注意:如果正则表达式不包含 g
标志,str.match()
将只返回第一个匹配项,类似于 RegExp.exec()
。返回的项还将具有以下额外属性:
groups
- 一个具有键名和键值的命名捕获组对象。index
- 搜索中找到结果的索引。input
- 搜索字符串的副本。
示例 2:匹配字符串中的部分
const string = "我的名字是 Albert。你的名字是 Soyuj。";
// 表达式匹配不区分大小写的 "名字是"+ 任意字 母直到句号 (.)
const re = /名字是\s[a-zA-Z]+\./gi;
let result = string.match(re);
console.log(result); // [ '名字是 Albert。', '名字是 Soyuj。' ]
// 使用命名捕获组
const re1 = /名字是\s(?<name>[a-zA-Z]+)\./i;
let found = string.match(re1);
console.log(found.groups); // {name: "Albert"}
输出
[ '名字是 Albert。', '名字是 Soyuj。' ]
{name: "Albert"}
在这里,我们使用了正则表达式来匹配字符串的某个部分。我们还可以使用上面所示的语法来捕获匹配中的某些组。