至少包含1个字符的字母数字

时间:2009-12-21 15:25:59

标签: c# regex

好的,所以我终于发现我需要以下内容:

因此正则表达式必须执行:

  1. 字母数字
  2. 至少1
  3. 必须包含4到8个字符(字母/数字)。
  4. 即。一个字母数字字符串,必须至少有一个字母,长度在4-8之间。 (所以它不能只是所有数字或只是所有字母)。

    所有这些都可以在一个正则表达式中完成吗?

5 个答案:

答案 0 :(得分:11)

我假设您的意思是字母数字,至少一个字母,以及4到8个字符。

试试这个:

(?=.*[a-zA-Z])[a-zA-Z0-9]{4,8}
  • (?= - 我们正在使用lookahead,因此我们可以在不影响其余匹配的情况下检查某些内容

  • .*[a-zA-Z] - 匹配任何后跟字母的内容,即检查我们至少有一个字母

  • [a-zA-Z0-9]{4,8} - 这将匹配一个字母或数字4到8次。

然而,你说的意图是“它不能只是所有数字或只是所有字母”,但要求1,2和3不能实现这一点,因为它可以是所有字母并满足所有三个要求。你可能想要这个,有一个额外的预测来确认至少有一个数字:

(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]{4,8}

a-zA-Z的使用不是非常国际友好,所以如果你的正则表达式可以使用,你可能最好使用“字母”转义码。

另外,我希望这与可接受的密码不匹配,因为4个字符可能不够长。

答案 1 :(得分:1)

2号和3号似乎相矛盾。以下内容将匹配4到8之间的字母数字:

/[0-9a-zA-Z]{4,8}/

答案 2 :(得分:1)

?Regex.IsMatch("sdf", "(?=.+[a-zA-Z])[a-zA-Z0-9]{4,8}")
false
?Regex.IsMatch("sdfd", "(?=.+[a-zA-Z])[a-zA-Z0-9]{4,8}")
true
?Regex.IsMatch("1234", "(?=.+[a-zA-Z])[a-zA-Z0-9]{4,8}")
false

警告**。* 。+

// At least one letter does not match with .*
?Regex.IsMatch("1111", "(?=.*[a-zA-Z])[a-zA-Z0-9]{4,8}")
false

?Regex.IsMatch("1aaa", "(?=.+[a-zA-Z])[a-zA-Z0-9]{4,8}")
true

答案 3 :(得分:0)

[a-zA-Z0-9]{4,8}

第一部分指定字母数字,第二部分指定4到8个字符。

答案 4 :(得分:0)

尝试:[a-zA-Z0-9] {4,8}