[ Web Proxy ]
URL:
Viewing: https://es.javascript.info/task/insert-after-head [Back]  [Original]

Insertar despus de la cabecera
ES

Queremos que este proyecto de cdigo abierto est disponible para personas de todo el mundo.

Ayuda a traducir el contenido de este tutorial a tu idioma!

    Buscar en Javascript.info:
    Buscar en el tutorial:
    Light themeDark theme
    DanskEnglishEspaolFranaisIndonesiaItalianoTrkeOzbek
    regresar a la leccin

    Insertar despus de la cabecera

    Tenemos un string con un documento HTML.

    Escribe una expresin regular que inserte <h1>Hello</h1> inmediatamente despus de la etiqueta <body>. La etiqueta puede tener atributos.

    Por ejemplo:

    let regexp = /tu expresin regular/;
    
    let str = `
    <html>
      <body style="height: 200px">
      ...
      </body>
    </html>
    `;
    
    str = str.replace(regexp, `<h1>Hello</h1>`);

    Despus de esto el valor de str debe ser:

    <html>
      <body style="height: 200px"><h1>Hello</h1>
      ...
      </body>
    </html>
    solucin

    Para insertar algo despus de la etiqueta <body>, primero debemos encontrarla. Para ello podemos usar la expresin regular <body.*?>.

    En esta tarea no necesitamos modificar la etiqueta <body>. Solamente agregar texto despus de ella.

    Veamos cmo podemos hacerlo:

    let str = '...<body style="...">...';
    str = str.replace(/<body.*?>/, '$&<h1>Hello</h1>');
    
    alert(str); // ...<body style="..."><h1>Hello</h1>...

    En el string de reemplazo, $& significa la coincidencia misma, la parte del texto original que corresponde a <body.*?>. Es reemplazada por s misma ms <h1>Hello</h1>.

    Una alternativa es el uso de lookbehind:

    let str = '...<body style="...">...';
    str = str.replace(/(?<=<body.*?>)/, `<h1>Hello</h1>`);
    
    alert(str); // ...<body style="..."><h1>Hello</h1>...

    Como puedes ver, solo est presente la parte lookbehind en esta expresin regular.

    Esto funciona as:

    • En cada posicin en el texto:
    • Verifica si est precedida por <body.*?>.
    • Si es as, tenemos una coincidencia.

    La etiqueta <body.*?> no ser devuelta. El resultado de esta expresin regular es un string vaco, pero coincide solo en las posiciones precedidas por <body.*?>.

    Entonces reemplaza la linea vaca, precedida por <body.*?>, con <h1>Hello</h1>. Esto es, la insercin despus de <body>.

    P.S. Los indicadores de Regexp tales como s y i tambin nos pueden ser tiles: /<body.*?>/si. El indicador s hace que que el punto . coincida tambin con el carcter de salto de lnea, y el indicador i hace que <body> tambin acepte coincidencias <BODY> en maysculas y minsculas.


    Web Proxy Viewer  |  New URL  |  Original Page