我发现很多php正则表达式和其他选项来确定字符串长度,如果它包含一个字母或一个数字,但我如何确定字符串中是否包含2个数字?
我正在尝试验证
的密码必须有8个字符
其中一个必须是大写字母
其中2个必须是数字
是否有针对此的单行正则表达式解决方案?
答案 0 :(得分:7)
if (preg_match(
'/^ # Start of string
(?=.*\p{Lu}) # at least one uppercase letter
(?=.*\d.*\d) # at least two digits
.{8} # exactly 8 characters
$ # End of string
/xu',
$subject)) {
# Successful match
(?=...)
是lookahead assertion。它检查某个正则表达式是否可以在当前位置匹配,但实际上并不消耗该字符串的任何部分,因此您可以将其中的几个正确放置在一行中。