2012-02-27 11 views
5

Estoy usando jQuery para ordenar una columna de correos electrónicos, aunque están codificados en base64 en js ... así que necesito un comando de expresión regular para ignorar las etiquetas <script>.*?<script> y solo ordenar lo que está después ellos (dentro de las etiquetas <noscript>).Regex usando js para quitar js de html

Columna HTML

<td> 
    <script type="text/javascript"> 
     document.write(Base64.decode('PG5vYnI+PGEgaHJlZj0ibWFpbHRvOmJpY2VAdWNzYy5lZHUiIHRpdGxlPSJiaWNlQHVjc2MuZWR1Ij5iaWNlPC9hPjwvbm9icj48YnIgLz4K')); 
    </script> 
    <noscript>username</noscript> 
</td> 

expresión regular que necesita un poco de amor

a.replace(/<script.*?<\/script>(.*?)/i,"$1"); 
+0

¿Se repiten todos los correos electrónicos en '' o '' para cada entrada de correo electrónico? – tftd

+0

Si cada correo electrónico está en un bloque noscript, ¿por qué no simplemente ordenar jQuery ("noscript"). Text()? – slashnick

Respuesta

2

Suponiendo que la estructura del HTML no cambia, puede utilizar esto:

$(a)​.contents().filter(function(){ 
    return this.nodeType === 3 
}).eq(1).text(); 

Es ge ts todos los nodos de texto y luego filtra a uno en el índice 1 y obtiene su valor de texto.

Y si quieres seguir con expresión regular, aquí está uno:

a.replace(/(<script type="text\/javascript">[^>]+>|<noscript>.*<\/noscript>)/ig,""); 
+0

Gracias, esto funcionó :) – Jeffrey

0

Sé que esto no es exactamente lo que está pidiendo (aunque estoy un poco confundido lo que estás pidiendo , para ser honesto ...), pero ¿has mirado usando document.getElementsByTagName('noscript')? Esta función debería devolver una matriz, cuyo primer elemento será su elemento noscript.

Además, no soy muy claro en su enfoque general de este problema, pero parece que está malinterpretando el propósito de un elemento noscript. noscript elementos solo se ejecutan cuando el navegador no admite Javascript, lo que significa que el único momento en que se mostraría el contenido noscript al usuario es cuando no se ejecutará el Javascript que está utilizando para modificar el contenido de noscript.

¿Quizás podría aclarar qué es exactamente lo que está tratando de hacer?

+0

Cuando 'noscript' existe en un elemento, todavía será un elemento secundario de ese elemento y aún podrá seleccionarse independientemente de que el código JavaScript esté allí. La única diferencia es que si JavaScript está habilitado, estará oculto. Obtener el 'textContent' de' td' todavía devuelve las etiquetas 'script' y' noscript'. –

+0

Derecha. Supongo que estaba interpretando su pregunta en el sentido de que quería usar JavaScript para modificar el contenido dentro de las etiquetas 'noscript' para luego mostrarlo al usuario, pero eso probablemente fue un malentendido de mi parte. – JacobEvelyn