Pregunta

Entonces tengo esta expresión regular:

&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)

Que coincida con todos los & en un bloque de texto

Sin embargo, si tengo esta cadena:

& & & & & <a href="http://localhost/MyFile.aspx?mything=2&this=4">My Text &</a>
---------------------------------------------------------^

...el & marcado también es objetivo, y como lo estoy usando para reemplazar el & con & la URL deja de ser válida:

http://localhost/MyFile.aspx?mything=2&amp;this=4

¡Oh!¿Alguien conoce una forma mejor de codificar los & que son no en una URL.

¿Fue útil?

Solución

No, la dirección URL no se vuelve inválida. El código HTML se convierte en:

<a href="http://localhost/MyFile.aspx?mything=2&amp;this=4">

Esto significa que el código que no haya sido codificado correctamente ahora está codificado correctamente, y la dirección URL real que contiene el enlace es:

http://localhost/MyFile.aspx?mything=2&this=4

Por lo tanto, no es un problema que el carácter & en el código se codifica, por el contrario, el código es correcto ahora.

Otros consejos

En powershell esto se podría hacer como:

$String ='& & & & & <a href="http://localhost/MyFile.aspx?mything=2&this=4">My Text &</a>'
$String -replace '(?<!<[^<>]*)&', "&amp;"

rendimientos

&amp; &amp; &amp; &amp; &amp; <a href="http://localhost/MyFile.aspx?mything=2&this=4">My Text &amp;</a>

Diseccionando la expresión regular:

  1. La mirada alrededor (?<!....) primero valida que no estás en ninguna etiqueta
  2. Luego se encuentran y reemplazan todas las cadenas &.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top