好了,所以我终于想通了,我需要以下条件:字母至少有1字
因此正则表达式来执行:
- 字母数字
- 至少1 信
- 必须有4和8之间字符(或字母/数字)。
即一个字母数字字符串,它必须至少有一个字母,长度在4-8之间。 (所以它不能只是所有的数字或只是所有的字母)。
所有这些都可以在一个正则表达式中完成吗?
好了,所以我终于想通了,我需要以下条件:字母至少有1字
因此正则表达式来执行:
即一个字母数字字符串,它必须至少有一个字母,长度在4-8之间。 (所以它不能只是所有的数字或只是所有的字母)。
所有这些都可以在一个正则表达式中完成吗?
[a-zA-Z0-9]{4,8}
第一部分指定的字母数字,而第二部分的4至8个字符指定。
尝试:[A-ZA-Z0-9] {4,8}
我假设你的意思alphaunumeric,至少一个信,和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个字符可能不够长。
我就是这么读的。 – 2009-12-21 15:34:41
**。*** **** **。+ ** – serhio 2009-12-21 16:01:10
它不应该是+,因为它不会匹配1aaa。 – 2009-12-21 23:50:41
?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
由字符我的意思是信,而4-8我的意思是任何字母。 – mrblah 2009-12-21 15:35:44