Fiz o array de objetos um pouco diferente, coloquei um campo text, e href representando o titúlo e o link.
ai teremos uma forma diferente de acessesa-los.
function extractLinks(string) {
const regex = /\[([^[\]]*?)\]\((https?:\/\/[^\s?#.].[^\s]*)\)/gm;
const captures = [...string.matchAll(regex)];
const links = captures.map(([_, text, href]) => ({ text, href }));
return links;
}
O array captures:
[
[
'[FileList](https://developer.mozilla.org/pt-BR/docs/Web/API/FileList)',
'FileList',
'https://developer.mozilla.org/pt-BR/docs/Web/API/FileList',
index: 148,
input: 'A interface File provê informações sobre arquivos e permite ao JavaScript a acessar seu conteúdo.\n' +
'\n' +
'São geralmente recuperados a partir de um objeto [FileList](https://developer.mozilla.org/pt-BR/docs/Web/API/FileList)\n' +
'que é retornado como resultado da seleção, pelo usuário, de arquivos através do elemento\n' +
'[<input>](https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/Input), a partir do objeto\n' +
'[DataTransfer](https://developer.mozilla.org/pt-BR/docs/Web/API/DataTransfer) utilizado em operações de arrastar e\n' +
'soltar, ou a partir da API `mozGetAsFile()` em um\n' +
'[HTMLCanvasElement](https://developer.mozilla.org/pt-BR/docs/Web/API/HTMLCanvasElement). Em Gecko, códigos com\n' +
'privilégiios podem criar objetos File representando qualquer arquivo local sem a intereção do usuário (veja\n' +
'[Implementation notes](https://developer.mozilla.org/pt-BR/docs/Web/API/File#implementation_notes) para mais\n' +
'informações.).\n' +
'\n' +
'[Teste de retorno 400](https://httpstat.us/404). [gatinho salsicha](http://gatinhosalsicha.com.br/)\n',
groups: undefined
],
[
'[<input>](https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/Input)',
'<input>',
'https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/Input',
index: 307,
input: 'A interface File provê informações sobre arquivos e permite ao JavaScript a acessar seu conteúdo.\n' +
'\n' +
'São geralmente recuperados a partir de um objeto [FileList](https://developer.mozilla.org/pt-BR/docs/Web/API/FileList)\n' +
'que é retornado como resultado da seleção, pelo usuário, de arquivos através do elemento\n' +
'[<input>](https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/Input), a partir do objeto\n' +
'[DataTransfer](https://developer.mozilla.org/pt-BR/docs/Web/API/DataTransfer) utilizado em operações de arrastar e\n' +
'soltar, ou a partir da API `mozGetAsFile()` em um\n' +
'[HTMLCanvasElement](https://developer.mozilla.org/pt-BR/docs/Web/API/HTMLCanvasElement). Em Gecko, códigos com\n' +
'privilégiios podem criar objetos File representando qualquer arquivo local sem a intereção do usuário (veja\n' +
'[Implementation notes](https://developer.mozilla.org/pt-BR/docs/Web/API/File#implementation_notes) para mais\n' +
'informações.).\n' +
'\n' +
'[Teste de retorno 400](https://httpstat.us/404). [gatinho salsicha](http://gatinhosalsicha.com.br/)\n',
groups: undefined
],
// os damais arrays aqui...
]
saída:
[
{
text: 'FileList',
href: 'https://developer.mozilla.org/pt-BR/docs/Web/API/FileList'
},
{
text: '<input>',
href: 'https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/Input'
},
{
text: 'DataTransfer',
href: 'https://developer.mozilla.org/pt-BR/docs/Web/API/DataTransfer'
},
{
text: 'HTMLCanvasElement',
href: 'https://developer.mozilla.org/pt-BR/docs/Web/API/HTMLCanvasElement'
},
{
text: 'Implementation notes',
href: 'https://developer.mozilla.org/pt-BR/docs/Web/API/File#implementation_notes'
},
{
text: 'Teste de retorno 400',
href: 'https://httpstat.us/404'
},
{
text: 'gatinho salsicha',
href: 'http://gatinhosalsicha.com.br/'
}
]