PHP检查字符串有2个数字,8个字符和1个大写字母

时间:2012-04-27 21:49:43

标签: php regex character uppercase digits

我发现很多php正则表达式和其他选项来确定字符串长度,如果它包含一个字母或一个数字,但我如何确定字符串中是否包含2个数字?

我正在尝试验证

的密码
  • 必须有8个字符

  • 其中一个必须是大写字母

  • 其中2个必须是数字

是否有针对此的单行正则表达式解决方案?

1 个答案:

答案 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。它检查某个正则表达式是否可以在当前位置匹配,但实际上并不消耗该字符串的任何部分,因此您可以将其中的几个正确放置在一行中。