<a ....href....>....</a>   就是要一个能验证此超链接的正则表达式“....”为任意字符。就是说以“<a”开头,中间含有“href”,后面还有“>”,最后以“</a>”结尾

解决方案 »

  1.   


    ^<a.*?href.*?>.*? </a>$加上开头和结尾
      

  2.   


                string str = "<a href=\"#\">链接</a>";
                Regex re = new Regex("^<a.*?href.*?>.*?</a>$");
                re.IsMatch(str);
      

  3.   

    这么说吧
    正则表达式是贪婪的 会尽可能的匹配字符串 例如string str = " <a href=\"#\" >链接</a><br><a href=\"#\" >链接</a><br> ";
    Regex re = new Regex("<a.*href.*>.*</a>");  //不加?
    re.Matchs(str);  // 这样只有一条匹配的记录 <a href=\"#\" >链接</a><br><a href=\"#\" >链接</a>  因为.匹配任何不是\n的字符 当然包括<Regex re = new Regex("<a.*?href.*?>.*?</a>");  //加?
    re.Matchs(str);  // 这样就有两个匹配 <a href=\"#\" >链接</a>和<a href=\"#\" >链接</a>  这样正则表达式就认为只要有匹配就返回 也就是懒惰的 尽可能匹配少的字符串  当然 把正则改称 "<a.*?href[^>]*>[^<]*</a>"  更好理解  其中[^>]*是说明不是>的字符有任意个 当遇到>字符自然就停了不走了  和.*?是一样的