有这样一个需求
就是让用户输入一个网址 比如:www.163.com ,163.com
当然 www.163.com ,163.com 算一个网址假定用户输入的网址为正确的 那如何判读输入的库中是否有了呢??如果需要正则 , 请给出正则表达式 谢谢

解决方案 »

  1.   

    写一个方法在数据库中查询就是了。返回BOOL变量
      

  2.   

    楼上 不是吧 用户可能输入http://163.com  或者163.com这样如何查询呢
      

  3.   

    using System.Text.RegularExpressions;
            public void SaveURL()
            {
                //依据保存最简化地址原则
                string input = "http://www.163.com/";//也可为www.163.com或163.com 结果一样
                string output= Regex.Replace(input,"((http://)?www.)?(163.com)(/)?","$3",RegexOptions.IgnoreCase|RegexOptions.Singleline);
                //output="163.com" 与数据库中对比判断该output值
            }
      

  4.   

    using System.Text.RegularExpressions;
      public void SaveURL()
      {
      //依据保存最简化地址原则
      string input = "http://www.163.com/";//也可为www.163.com或163.com 结果一样
      string output= Regex.Replace(input,"((http://)?www.)?(163.com)(/)?","$3",RegexOptions.IgnoreCase|RegexOptions.Singleline);
      //output="163.com" 与数据库中对比判断该output值
      }
      

  5.   

    首先谢谢 5楼兄弟但数据库中又如何对比呢 数据库中的数据 可能是www.163.com 也可能是163.com 还可能是hao163.com求解 谢谢
      

  6.   

    给你想想,个人感觉可以忽略www.
    后面的完全匹配,正则好像有一个语法就是可选吧,不怎么会正则
      

  7.   

    declare @url varchar(200)
    declare @isHave bit
    set @url='163.com' --从上面正则式得到的结果传入作为查询参数
    set @isHave=(select count(1)  from your_talbe
     where charindex(@url,url_str)>0)
    --url_str为列名 your_table为表名
    --找到结果(无论一个或多个)@isHave会自动置为1
    select @isHave --返回结果 1=已有 0=没有--当然可以用一句表示:
    select case when (select count(1)  from your_table
     where charindex('163.com',url_str)>0)>0 then 1 else 0 end
      

  8.   

    个人觉得不用数据库匹配数据库取出后,正则匹配不就可以了?没有www就直接匹配有www就匹配后面的。
      

  9.   

    WO_YOU_XIE_SHANG_XIN如果 数据库里面有 hao163.com 是不是也返回1啊
      

  10.   

    还可以你库里存域名的IP 和域名对应关系用户输入一个域名 (如news.sohu.com) 取得IP与库中已有对比
    System.Net.IPAddress[] ip=System.Net.Dns.GetHostAddresses("news.sohu.com");只判断一个ip[0](如果有)即可
      

  11.   

    域名ip不太好 ip可能会变 因为会有一堆小网站的录入
      

  12.   

    最简单的就是正则验证域名 当然我那个正则式需要改
    楼主继续探索吧
    OVER 
      

  13.   

    select * from tab where like %163.com%
      

  14.   


    create proc '存储过程名'
    @url varchar(100) --要存入的网址
    as
    declare @int int
    set @int=len(@url)+1
    select count(*) from tableName where right('字段名',len(@url))=@url and left(right('字段名',@int),1)<>'.' and left(right('字段名',@int),1)<>'/'