开发者

HTML anchor replace with RegEx

I have HTML data which I'll be using in a client app. I need to Regex.Replace the <a> tags from

<a href="Bahai.aspx">Bahai</a>

to

<a href="#" onclick="process('Bahai.aspx');return false;">Bahai</a>

In C# using RegExReplace with a regex similar to

<a[^>]*? href=\"(?<url开发者_JAVA技巧>[^\"]+)\"[^>]*?>(?<text>.*?)</a>

Ideas?


In C# you could use code like this:

Regex.Replace("<a href=\"Bahai.aspx\">Bahai</a>", 
            "<a href=\"(.+?)\">(.+?)</a>", "<a href=\"#\" onclick=\"process('$1');return false;>$2</a>",
            RegexOptions.IgnoreCase);

It will return a string that matches what you require.


In general, it's best not to parse HTML with regular expressions. Try the Html Agility Pack instead.


If you insist on using javascript to get people to visit Bahai.aspx, then people without javascript won't get there. Could you use javascript to do the rewrite instead, for instance in jquery?

Let's say you tag the anchor tags with class="doProcess" then you could use the following jQuery script to change the links:

$(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;
    });
  });
});

then both the users with javascript and without will get sent to Bahai (if that is what your process method does) :)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜