我有HTML数据,我将在客户端应用中使用。我需要Regex.Replace来自
的<a>
标签
<a href="Bahai.aspx">Bahai</a>
到
<a href="#" onclick="process('Bahai.aspx');return false;">Bahai</a>
在 C#中使用RegExReplace,其正则表达式类似于
<a[^>]*? href=\"(?<url>[^\"]+)\"[^>]*?>(?<text>.*?)</a>
想法?
答案 0 :(得分:4)
在C#中你可以使用这样的代码:
Regex.Replace("<a href=\"Bahai.aspx\">Bahai</a>",
"<a href=\"(.+?)\">(.+?)</a>", "<a href=\"#\" onclick=\"process('$1');return false;>$2</a>",
RegexOptions.IgnoreCase);
它将返回符合您要求的字符串。
答案 1 :(得分:1)
通常,最好不要使用正则表达式解析HTML。请改为使用Html Agility Pack。
答案 2 :(得分:0)
如果你坚持使用javascript让人们访问Bahai.aspx,那么没有javascript的人将无法到达那里。您是否可以使用javascript进行重写,例如在jquery中?
假设您使用class="doProcess"
标记锚标记,然后您可以使用以下jQuery脚本来更改链接:
$(document).ready(function(){
$('a.doProcess').each(function(){
var a = $(this);
var href = a.attr('href');
a.attr('href','#');
a.click(function(){
process(href);
return false;
});
});
});
然后使用javascript和不使用的用户都会被发送到Bahai(如果这是你的处理方法所做的那样):)