正则表达式匹配至少4个字符

时间:2015-09-28 08:21:00

标签: c# regex

我想进行密码验证,其中用户的名字和姓氏不应该是密码的一部分。

例如 mary maverick 是用户名,并假设用户输入的密码如Test123%maveTest123%rickTest123%ryma,在这种情况下验证应该在C#中失败代码。

任何人都可以帮助我或指导我如何写正则表达式?

2 个答案:

答案 0 :(得分:0)

我认为使用简单的算法更容易实现你的目标,而不是正则表达式因为你没有寻找预定义的模式,但你只需要知道密码中的字符是否在与用户名中存储的顺序相同。

要实现这一目标,您可以:

  1. 选择最短的字符串。
  2. 对于c1中的每个字符,请在较长的字符串中搜索相同的字符。
  3. 如果找到,请检查c后面的字符是否也跟随较长字符串中的其他字符。如果是,请移动到后面的字符(继续直到匹配4个连续字符),如果没有,则将c更改为后面的字符(在较短的字符串中)。
  4. 重复直到你的字符用完(你通过最短的字符串)。

答案 1 :(得分:0)

此代码根据您的方案运行:

            string username = "mary maverick";
            string password = "Test123%mave";
            username = username.Replace(" ", "");
            for (int i = 0; i < password.Length; i++)
            {
                if (i + 4 <= password.Length)
                {
                    string temp = password.Substring(i,  4);
                    if (username.Contains(temp))
                    {
                        Console.WriteLine("Faild!");
                        return;
                    }
                }
            }
            Console.WriteLine("Accepted!");

您可以将password替换为您想要设置为密码的任何内容。