Así que estaba tratando de hacer un analizador de rebajas que admitiera vientos de cola, pero me quedé atascado en la parte del bloque de código. cada vez que ejecuto .exec() en el bloque de código regex, no puedo acceder a los valores de la matriz devuelta, solo puedo registrar la matriz en la consola. También intenté agregar un lastIndex pero eso no funciona.
function parseCodeBlock(data) { let match = /^(([ \t]*`{3,4})([^\n]*)([\s\S]+?)(^[ \t]*\2))/gm.exec( data.string ); return JSON.parse(JSON.stringify(match)); } // line 94 - 97 let match = parseCodeBlock({ string: HtmlCode }); console.log(match); let code = match[3];De los registros, su código se ejecuta dos veces, la segunda vez que el valor devuelto es nulo.
Nota: Traté de agregar esto como comentario, pero no tengo suficientes puntos de reputación como nuevo colaborador :)
Como puedo ver en su captura de pantalla, hay dos registros de la misma línea de código (95). Uno con la matriz, el segundo con nulo.
Supongo que está intentando acceder a la matriz DESPUÉS del segundo registro (nulo)
Encontré otra expresión regular que solucionó este problema aquí está el código.
function parseCodeBlock(data) { let html = data.string.replace( /^```(([a-z0-9-]+?)\n+)?\n*([^]+?)\n*```/gim, `<pre><code class="language-$1">$3</code></pre>` ); return html; }