Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式至少匹配4个字符_C#_Regex - Fatal编程技术网

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

C# 正则表达式至少匹配4个字符,c#,regex,C#,Regex,我想做密码验证,其中用户名和姓氏不应该是密码的一部分 例如,mary maverick是用户名,假设用户输入了密码,如Test123%mave或Test123%rick或Test123%ryma,在这种情况下,C代码中的验证应该失败 有谁能帮助我或指导我如何编写正则表达式吗?我认为使用简单的算法而不是正则表达式更容易实现您的目标,因为您不是在寻找预定义的模式,但您只需要知道密码中的字符是否与用户名中存储的字符顺序相同 为此,您可以: 选择最短的字符串 对于1中c中的每个字符,在较长的字符串中查找

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

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


有谁能帮助我或指导我如何编写正则表达式吗?

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

为此,您可以:

  • 选择最短的字符串
  • 对于
    1
    c
    中的每个字符,在较长的字符串中查找相同的字符
  • 如果找到,请检查
    c
    后面的字符是否也跟在较长字符串中的另一个字符后面。如果是,则移动到后面的字符(继续,直到匹配4个连续字符),如果不是,则将
    c
    更改为后面的字符(在较短的字符串内)
  • 重复此操作,直到用完字符(您将使用最短的字符串)

  • 我认为通过使用简单的算法,而不是正则表达式,可以更容易地实现您所追求的目标,因为您不是在寻找预定义的模式,但您只需要知道密码中的字符是否与用户名中存储的字符顺序相同

    为此,您可以:

  • 选择最短的字符串
  • 对于
    1
    c
    中的每个字符,在较长的字符串中查找相同的字符
  • 如果找到,请检查
    c
    后面的字符是否也跟在较长字符串中的另一个字符后面。如果是,则移动到后面的字符(继续,直到匹配4个连续字符),如果不是,则将
    c
    更改为后面的字符(在较短的字符串内)
  • 重复此操作,直到用完字符(您将使用最短的字符串)

  • 此代码根据您的场景工作:

                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!");
    
    string username=“mary maverick”;
    string password=“Test123%mave”;
    用户名=用户名。替换(“,”);
    for(int i=0;i如果(i+4此代码根据您的场景工作:

                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!");
    
    string username=“mary maverick”;
    string password=“Test123%mave”;
    用户名=用户名。替换(“,”);
    for(int i=0;i如果(i+4 Hi Saman您的c#代码非常适合我的要求,但我只想通过正则表达式来实现它。@ManojSitapara我不知道您为什么只想通过正则表达式来实现这一点,但如果我是您,我会为此制作一个简单的函数并使用它,这不会有什么大不了的!谢谢Saman。最后我放弃了使用正则表达式的计划Session.@ManojSitapara好的,如果你认为值得的话,请选择最好的答案。嗨,Saman,你的c#代码非常适合我的要求,但我只想通过正则表达式来实现它。@ManojSitapara我不知道你为什么只想通过正则表达式来实现这一点,但如果我是你,我会为此制作一个简单的函数并使用它,它不会太重要了!谢谢Saman。最后我放弃了使用正则表达式的计划。@ManojSitapara好的,如果你认为值得的话,请选择最好的答案。为什么要使用正则表达式呢?它不是一个典型的应用程序,专用算法可能会快得多。这是一个任务吗?嗨,Nebula,我只是尝试避免使用c#代码进行此验证,并尝试使用reg表达式(据我所知),reg exp进行验证的速度要快得多。如果我在这里出错,请在这里纠正我。通常情况下,RegEx的速度较慢,因为它们“暴力”查询数据。请参阅示例。算法往往更快,因为它们是针对问题定制的。此外,在您的ca中se,我认为正则表达式会变得非常复杂(=慢),因为您也在对用户名进行窗口操作。例如:允许匹配的最小字符数是多少?您不能排除它们(好的=)感谢Nebula提供的信息,这对我真的很有帮助。为什么要使用正则表达式呢?这不是一个典型的应用程序,专用算法可能会快得多。这是一个任务吗?嗨Nebula,我只是想避免使用c代码进行验证,并尝试使用我所知道的正则表达式It’进行验证要快得多。如果我在这里错了,请在这里纠正我。不,通常正则表达式速度较慢,因为它们对数据进行“暴力”查询。例如,请参阅。算法往往更快,因为它们是针对问题量身定制的。此外,在您的情况下,我认为正则表达式会变得相当复杂(=慢)因为你也在浏览用户名。例如:允许匹配的最小字符数是多少?你不能排除它们(好的=)谢谢Nebula提供的信息,这对我很有帮助。