接受字母数字字符(6-10个字符)的正则表达式.NET,C#

接受字母数字字符(6-10个字符)的正则表达式.NET,C#,c#,regex,char,numbers,alphanumeric,C#,Regex,Char,Numbers,Alphanumeric,我正在使用C#with.NET构建一个用户注册表单。 我需要验证用户输入的密码字段。 验证要求如下 ^([a-zA-Z0-9]{6,10})$ 它应该是字母数字(a-z,a-z,0-9) 它应接受6-10个字符(最少6个字符,最多10个字符) 至少有1个字母和数字(例如:stack1over) 我使用的正则表达式如下所示 ^([a-zA-Z0-9]{6,10})$ 它满足我的前两个条件。 仅输入字符或数字时失败。使用正数 环视也称为零宽度断言。它们的宽度为零,就像行首和行尾一样(^,$)。不

我正在使用C#with.NET构建一个用户注册表单。 我需要验证用户输入的密码字段。 验证要求如下

^([a-zA-Z0-9]{6,10})$
  • 它应该是字母数字(a-z,a-z,0-9)
  • 它应接受6-10个字符(最少6个字符,最多10个字符)
  • 至少有1个字母和数字(例如:
    stack1over
  • 我使用的正则表达式如下所示

    ^([a-zA-Z0-9]{6,10})$
    
    它满足我的前两个条件。 仅输入字符或数字时失败。

    使用正数

    环视也称为零宽度断言。它们的宽度为零,就像行首和行尾一样(
    ^
    $
    )。不同之处在于,lookarounds实际上会匹配字符,但随后放弃匹配,只返回结果:匹配或不匹配。这就是为什么它们被称为“断言”。它们不使用字符串中的字符,而只声明匹配是否可能

    环视的语法:

    • (?=REGEX)
      正向前瞻
    • (?!REGEX)
      负前瞻
    • (?
      
        如果可以的话,通过多个正则表达式传递它。它将比那些前瞻性的怪物干净得多:-)

        虽然有些人认为它是聪明的,但不必用一个正则表达式(或者甚至任何正则表达式)来做任何事情,只是要见证那些想要正则表达式来检测75到4093之间的数的人。 您是否希望看到一些漂亮干净的代码,如:

        if not checkRegex(str,"^[0-9]+$")
            return false
        val = string_to_int(str);
        return (val >= 75) and (val <= 4093)
        
        我知道我更喜欢维护哪一个:-)


        为什么,为什么,为什么,你要设置密码的最大允许长度?我将进一步接受Damien的评论:为什么你(或者更确切地说,提供要求的人)将密码限制为字母数字字符?好的密码中有非字母数字。他们是否主动希望人们使用错误的密码?试着教育给你这些要求的人。但是我们的要求是这样的,只有当他们对多个系统进行单点登录时,大型机才允许10个字符的密码。谁知道呢?谁在乎呢?只要回答这个该死的问题就行了:-)谢谢你的回答。但它不起作用。尝试更改插入值的顺序。它不会正常工作的哦,我没有想到这一点。在我看来,它工作正常,至少在Python中是这样)尝试一些以数字开头的文本。如果你在单词的开头使用字母表,它会按照你的预期工作。但是当你开始用数字来做同样的事情时,它就没有了。(我正在用c#来使用.net)谢谢你的耐心。@Madhu我用expresso测试了它,它对以数字开头的字符串工作得很好。(我身边没有.net开发环境)。发布一个失败的示例,我们可能会告诉您问题所在。您是指下面的单个表达式中的所有这些validationexpression=“^([a-zA-Z0-9]{6,10})$[a-zA-Z][0-9]”否。我的意思是:if(!str.match(re1))返回false;如果(!str.match(re2))返回false;返回str.match(re3);-这是三个单独的调用和三个单独的正则表达式。
        if not checkRegex(str,"^[0-9]+$")
            return false
        val = string_to_int(str);
        return (val >= 75) and (val <= 4093)
        
        return checkRegex(str,"^7[5-9]$|^[89][0-9]$|^[1-9][0-9][0-9]$|^[1-3][0-9][0-9][0-9]$|^40[0-8][0-9]$|^409[0-3]$")
        
        string r = @"^(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]{6,10}$";
        Regex x = new Regex(r);
        var z = x.IsMatch(password);