各位大神,我做项目的时候需要简单的校验身份证,要求是必须是十八位,前十七位是数字,最后一位可以是数字也可以是X,有没有简单的校验方法,我网上查到的全是详细的校验

解决方案 »

  1.   

    /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/
      

  2.   

    public bool IsIDcard(string str_idcard)        {            return System.Text.RegularExpressions.Regex.IsMatch(str_idcard, @"(/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/");        }
      

  3.   

    (?i)^[1-9]\d{16}(?:X|\d)$第1位至少不能是0 吧。。
      

  4.   

      //using System.Text.RegularExpressions;
        protected void Page_Load(object sender, EventArgs e)
        {
            Check("323dfkdskfg");//error
            Check("11111111111111111X");//ok
            Check("111111111111111111");//ok        Check("11111111111111111A");//error    }    private void Check(string s)
        {
            bool b = Regex.Match(s, @"^\d{17}(?:\d|X)$").Success;
            
            s = b ? "验证成功" : "失败";
            Response.Write(s+"<br/>");
        }
      

  5.   

    //using System.Text.RegularExpressions;//可参考5楼的验证逻辑:(?i)^[1-9]\d{16}(?:X|\d)$
      protected void Page_Load(object sender, EventArgs e)
      {
      Check("323dfkdskfg");//error
      Check("11111111111111111X");//ok
      Check("111111111111111111");//ok  Check("11111111111111111A");//error  }  private void Check(string s)
      {
      bool b = Regex.Match(s, @"^\d{17}(?:\d|X)$").Success;
        
      s = b ? "验证成功" : "失败";
      Response.Write(s+"<br/>");
      }
      

  6.   

    /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/