楼主的这种情况是不存在的,如果地址只是 www.sina.com.cn 或 blog.sina.com.cn
那么根据标准,应被解释为当前的url下的www.sina.com.cn 或 blog.sina.com.cn目录。
我在本机wwwroot 目录下做了一个实验,在wwwroot 目录下创建一个test.htm,里面只
包含这么一句:
<a href="www.sina.com.cn">blog.sina.com.cn</a>
用IE和firefox打开 http://localhost/test.htm,并点击这个超链接,两个浏览器均指向
http://localhost/www.sina.com.cn 而不是 http://www.sina.com.cn
所以按楼上几位的方法做应该是没有问题的。
href = ('|")(.*?)('|")( |/)
ms-help://MS.MSDNQTR.v90.en/fxref_system/html/1fe52f7b-7367-a48a-abeb-dc46f0ab2e92.htm
先用正则表达式 <a[^>]+href=["']?(?'Url'[^"']+)['"][^>]*>找出所有的URL,
然后判断每个url是否以http开头,如果不是,就使用以下代码:
//string baseUrl = html source code的url;
//Uri baseUri = new Uri(baseUrl);
//string matchedUrl = 从正则表达式匹配到的url;
Uri newUri = new Uri(baseUri, matchedUrl);
string newUrl = newUri.ToString();
最简单的选择regulation正则表达式.....捕捉带http的
嗯?通过DOM获取是不是更简单直接一点?
document.getElementsByTagName("a")
然后可以通过href获取链接,如果没有href的视为锚点丢掉,另外href="#"的也丢掉,是不是就可以了?
--------------------------------------------------------------------------------------------------
楼主的这种情况是不存在的,如果地址只是 www.sina.com.cn 或 blog.sina.com.cn
那么根据标准,应被解释为当前的url下的www.sina.com.cn 或 blog.sina.com.cn目录。
……
--------------------------------------------------------------------------------------------------
如这个小虾所言,所有链接的链接地址分为两类:绝对地址,相对地址。判断依据很简单,以"http://"打头为绝对地址,否则为相对地址。
对你所担忧的情况,“www.sina.com.cn”等人为认定绝对路径、但系统认定相对路径的情形,建议以系统认定为主,因为你不能排除某些站点存有这些特殊的相对目录。
当然,如果你当前的开发场景恰好需要将“www.sina.com.cn”这些以绝对路径处理,那么建议用一张散列表(Dicrionary)存贮,一旦前缀(把 www.sina.com.cn/some.htm 处理成 www.sina.com.cn
)匹配到该字典,就在其前面手动加 "http://"。
例外地,如果你人为认定的绝对路径具有一定的规律性,那大可以进行手动编程再处理。比如,所有前缀以 www. 打头, 以 .com 或 .cn 等结尾的,我均认为是绝对路径。