字符串化匹配结果
如何显示所有匹配内容,例如
[
'JavaScript',
index: 14,
input: 'I am learning JavaScript not Java.',
groups: undefined
]
[
'Java',
index: 29,
input: 'I am learning JavaScript not Java.',
groups: undefined
]
JSON.stringify 似乎不起作用:https ://jsfiddle.net/spxh6ev0/
const string = "I am learning JavaScript not Java.";
const re = /Java[a-z]*/gi;
let result = string.matchAll(re);
for (let match of result) {
alert(JSON.stringify(match));
}
回答
String#prototype#matchAll 返回一个可迭代对象,您需要将其类型转换为一个数组并对其进行整形以匹配您的输出,如下所示 -
const string = "I am learning JavaScript not Java.";
const re = /Java[a-z]*/gi;
let result = [...string.matchAll(re)].map((x) => ({
match: x[0],
index: x.index,
input: x.input,
groups: x.groups
}));
for (let match of result) {
console.log(match);
}