0

所以我有这个正则表达式:

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

匹配文本块中的所有 &

但是,如果我有这个字符串:

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

...标记的 & 也得到了目标 - 当我使用它用 & 替换 & 时,url 变得无效:

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

哦!有谁知道编码不在网址中的&的更好方法。

4

2 回答 2

4

不,URL 不会变得无效。HTML 代码变为:

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

这意味着现在没有正确编码的代码被正确编码了,链接包含的实际 URL 是:

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

因此,代码中的 & 字符被编码不是问题,相反,代码现在是正确的。

于 2009-11-05T11:04:21.300 回答
0

在 powershell 中,这可以这样完成:

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

产量

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

剖析正则表达式:

  1. 环顾四周 (?<! .... ) 首先验证您不在任何标签中
  2. 然后找到并替换所有 & 字符串。
于 2013-04-28T17:03:13.750 回答