好的,所以我终于发现我需要以下内容:
因此正则表达式必须执行:
即。一个字母数字字符串,必须至少有一个字母,长度在4-8之间。 (所以它不能只是所有数字或只是所有字母)。
所有这些都可以在一个正则表达式中完成吗?
答案 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)
/[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}