最难的正则表达式:匹配Url,解决的就给分
我测试的方法:
在页面有两个TextBox,一个Button
在第一个textBox中输入以下内容:
(测试内容)如果在www.baidu.com搜索csdn会出现csdn网址http://www.csdn.net/,
里面这个http://topic.csdn.net/u/20071009/18/76cbd513-56f8-4a1b-a555-a17b7f33c50e.html是我的帖子
点Button 调用下面的方法:在第2个textbox 中输出结果。
其中www.baidu.com、http://www.csdn.net/、http://topic.csdn.net/u/20071009/18/76cbd513-56f8-4a1b-a555-a17b7f33c50e.html是有效网址,在第2个textbox 中要加上<a>标记,
第2个textbox 中应该得到的结果:
(测试内容)如果在<a href='http://www.baidu.com'>www.baidu.com</a>搜索csdn会出现csdn网址<a href='http://www.csdn.net/'>http://www.csdn.net/</a>,
里面这个<a href='http://topic.csdn.net/u/20071009/18/76cbd513-56f8-4a1b-a555-a17b7f33c50e.html'>http://topic.csdn.net/u/20071009/18/76cbd513-56f8-4a1b-a555-a17b7f33c50e.html</a>是我的帖子
但我做的时候是错误的,正则表达式肯定是错误的,但我测试的方法是不是不对啊 ????
protected void btnOK_Click(object sender, EventArgs e)
{
this.txtUrl.Text = IsHavaUrl(this.TextBox1.Text);
}
调用的方法如下:
private string IsHavaUrl(string sDetail)
{
Regex r;
Match m;
r = new Regex(@"((http(s)?://([\w-]+\.)+[\w-]+(/[\w-] ./?%&=]*)?))",RegexOptions.IgnoreCase);
for (m = r.Match(sDetail); m.Success; m = m.NextMatch())
{
sDetail = sDetail.Replace(m.Groups[0].ToString(), " <A href=\"" + m.Groups[0].ToString() + "\" target=\"_blank\" >" + m.Groups[0].ToString() + " </A >");
}
return sDetail;
}
求正确的正则表达式????~~~~