ASP.NET 4.0更改控件呈现,以便RegEx解析ASP.NET呈现的HTML不再有效

时间:2011-04-14 08:14:21

标签: c# asp.net regex .net-4.0 .net-2.0

当试图找到一个href标签以便在字符串中保存的html中动态更新它们时,自从从2.0移动到4.0以来,一直运行良好一段时间的RegEx已经破坏。

正则表达式:

<a\\s+[^>]*(href=\"([^#\"]+)\")[^>]*>(.*)</a>

我们用它们中的哈希(#)来折扣那些href,因为这意味着它们已经被更新但是想要返回所有其他实例。问题来了,因为现在我们的javascript函数输出时使用&#039;而不是单引号,这意味着它们会因为哈希(#)而违反测试。

.Net从2.0到4.0的变化是否会导致这种变化?

更新

如上所述,.Net 4.0正在吐出并自动将单引号更改为&#039;

<a class="ctl00_Menu_1 Menu_DynamicMenuItemStyle ctl00_Menu_6" href="javascript:__doPostBack(&#39;ctl00$Menu&#39;,&#39;Menu Parent\\Menu Child&#39;)" style="border-style:none;font-size:1em;">Menu Child</a>

以前,它输出以下内容:

<a class="ctl00_Menu_1 Menu_DynamicMenuItemStyle ctl00_Menu_6" href="javascript:__doPostBack('ctl00$Menu','Menu Parent\\Menu Child')" style="border-style:none;font-size:1em;">Menu Child</a>

我们的正则表达式正确捕捉到了这一点,但我们必须更新到以下内容:

@"<a\s+[^>]*(href=\""([^#\""][^\""]+)\"")[^>]*>(.*)</a>"

这现在解释了新出现的哈希值,而没有筛选出那些编码的哈希值。我已经解决了这个问题,并且理解已经发生了变化,尽管我不是100%已经做出改变的地方。感谢您的关注。

0 个答案:

没有答案