注册帐号,帐号要求:
6到9位的数字;不能全部是同一数字;6和8两位数字不能超过4位;6和8加起来也不能超过4位.
写好了就是100分.

解决方案 »

  1.   

    // 6到9位的数字;不能全部是同一数字;6和8两位数字不能超过4位;6和8加起来也不能超过4位. using System;
    using System.Text.RegularExpressions;class Test
    {
      static void Main()
      {
        Console.WriteLine(IsIDOK("1234AB"));    // false
        Console.WriteLine(IsIDOK("123456"));    // true
        Console.WriteLine(IsIDOK("1111111"));   // false
        Console.WriteLine(IsIDOK("6677886"));   // false
      }
      
      static bool IsIDOK(string id)
      {
        if (!Regex.IsMatch(id, @"\d{6,9}")) return false;
        if (IsSameChar(id)) return false;
        int n6 = NumberOfDigit(id, '6');
        int n8 = NumberOfDigit(id, '8');
        if (n6 > 4 || n8 > 4 || n6 + n8 > 4) return false;
        return true;
      }
      
      static int NumberOfDigit(string s, char digit)
      {
        int n = 0;
        foreach (char c in s)
        {
          if (c == digit) n++;
        }
        return n; 
      }
      
      static bool IsSameChar(string s)
      {
        if (string.IsNullOrEmpty(s)) return true;
        char c0 = s[0];
        foreach (char c in s)
        {
          if (c != c0) return false;
        }
        return true;  
      }
    }
      

  2.   

    写成一个正则比较难,分成N个小的就很容易了.而且 n6+n8>4 就包括了 n6>4 和 n8>4 了/.
      

  3.   

        if (!Regex.IsMatch(id, @"\d{6,9}")) return false;应改为:
        if (!Regex.IsMatch(id, @"^\d{6,9}$")) return false;
      

  4.   

    var pn = /^[0-5,7,9]{1,9}([6]{0,3}|[8]{0,3}[6|8]{0,3})$/g; 
    var pn2 /\d{6,9}/g;
    用这两个应该可以解决.