打印本文 打印本文 关闭窗口 关闭窗口
使用正则表达式在NET中动态实现URL超级链接和邮件地址
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1015  更新时间:2009/6/9 2:34:16  文章录入:mintao  责任编辑:mintao

  问题的引入:

  在制作论坛或留言版的时候,如果您的网站提供的输入框是一般的文本输入框,而不是在线编辑器文本框控件,那么,当别人想输入超级链接时,如果是一般的不懂网页制作的网友,是无法实现的;如果遇到稍有基础的网友,极有可能会构造性的输入超级链接;

  但是,即便是输入构造性的链接字符,由于网站自身的技术原因,或者编码的问题,仍然导致显示出来的链接只是一种普通的文字,而无法真正实现超级链接的功能;

  以上的问题同样等同于邮件地址;

  针对这种情况,作为站长的你,应该如何来解决这种给予用户不良或不好友的体验呢?

  解决的办法

  要想自动显示超链接的关键在于如何能正确识别超链接,毫无疑问的,最有效的方法是用正则表达式。正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式,描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。.NET基础类库中包含有一个名字空间和一系列可以充分发挥规则表达式威力的类,用它就可以自动探测出文字中的URL链接或Email地址。下面我们一起来学习如何用ASP.NET(C#)来实现我们的目的:

  首先,要想在ASP.NET(C#)中使用正则表达式就必须把 System.Text.RegularExpressions 这个命名空间包含进来:

  using System.Text.RegularExpressions;

  第二步,用正则表达式识别URL超链接

  Regex urlregex = new Regex(@"(http:\/\/([\w.]+\/?)\S*)",
  RegexOptions.IgnoreCase RegexOptions.Compiled);

  下面的代码是用正则表达式识别Email地址:

  Regex emailregex = new Regex(@"([a-zA-Z_0-9.-]+@[a-zA-Z_0-9.-]+\.\w+)",
  RegexOptions.IgnoreCase RegexOptions.Compiled);

  第三步,当程序已经识别出URL超链接或Email地址后,必须用超链接对这些超链接进行替换,这样才能把这些文字显示为链接的形式。请参考下面的函数:

  private void Button6_Click(object sender, System.EventArgs e)
   {
    string strContent = InputTextBox.Text;
    Regex urlregex = new Regex(@"(http:\/\/([\w.]+\/?)\S*)",
    RegexOptions.IgnoreCase  RegexOptions.Compiled);
    strContent = urlregex.Replace(strContent,
    "");
    Regex emailregex = new Regex(@"([a-zA-Z_0-9.-]+@[a-zA-Z_0-9.-]+\.\w+)",
    RegexOptions.IgnoreCase  RegexOptions.Compiled);
    strContent = emailregex.Replace(strContent, "");
    lbContent.Text += "
"+strContent;
   }

  通过以上几步,你就可以在网页上自动显示超链接以及Email地址了。希望本文对您有所帮助!

打印本文 打印本文 关闭窗口 关闭窗口