Descobri, após alguns testes, que o problema se encontra na primeira parte da expressão regular \[([^]]*)\]
Acontece que os colchetes são caracteres especiais utilizados para definir uma classe dentro da expressão regular.
Observando a classe [^]]
, o site regex101 interpreta o elemento "]" que está dentro da classe como se fosse um caractere normal, mas ao utilizar a mesma expressão regular no JavaScript, ele o interpreta como o fechamento da classe, como não há nenhum trecho de código que satisfaz a expressão regular interpretada pelo JavaScript, o valor NULL é retornado.
Para solucionar o problema basta adicionar o caractere de escape "\" antes do colchete "]" que está dentro da classe, tornando-o assim um caractere normal aos olhos do JavaScript.
Portanto a expressão regular completa fica:
const regex = /\[([^\]]*)\]\((https?:\/\/[^$#\s].[^\s]*)\)/gm;
Espero ter ajudado!
Abraços