有一ASP.NET网站,因为用了框架,  在用户输入的FCKeditor 编辑器里如果有一个或多个超链接,
会直接在当前框架打开.
已经知道将超链接 添加 target="_top"  就可以达到目的.问题是:
如何用正则来添加或修改   target="_top"  
因为超链接可能是用FCKeditor 编辑器 里 工具编辑, 也可能是复制其他网站的,
会有多种形式 ,有target 属性,没有target,和target属性值不对应的 . 如:<a href="abc.htm" title="">abc</a>
甚至没有引号:
<a href=abc.htm>abc</a><a href="abc.htm" target="_blank">abc</a><a href="abc.htm" >abc</a>
如何才能用正则完美替换:<a href="abc.htm" title="" target="_top">abc</a>
甚至没有引号:
<a href=abc.htm target=_top>abc</a><a href="abc.htm" target="_top">abc</a><a href="abc.htm" target="_top">abc</a>
请高手指教,谢谢.

解决方案 »

  1.   

    应该用不着正则吧直接将 【<a 】
    替换为 【<a target="_blank"】target标签重复没有问题的。
    如果有些没有引号,贴到VS编辑框里,format一下代码就都有了。
      

  2.   

    try...Regex reg = new Regex(@"(?is)(?<h><a\b(?:(?!target=)[^>])*)(?:target=(['""]?)[^'""\s>]*\1)?(?<b>[^>]*)>");
    string result = reg.Replace(yourStr, "${h}${b} target=\"_top\">");
    richTextBox2.Text += result;
      

  3.   

    lxcnn 方法可行,分给你了,谢谢.