2012-04-27 50 views
0

我发现了很多php正则表达式和其他选项来确定字符串长度,如果它包含一个字母或一个数字,但是如何确定一个字符串是否有2数字在里面?PHP检查字符串有2个数字,8个字符和1个大写

我试图验证密码

  • 必须只有8个字符

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

  • 其中2个必须是数字

是否有单行正则表达式解决方案 这个?

+2

为什么要将密码的长度限制为8个字符?希望你没有为银行工作...... – 2012-04-27 21:59:56

+0

客户要求它 – 2012-04-27 22:08:17

+0

只是你是我的英雄。真棒解决方案。 – 2012-04-27 22:08:35

回答

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

+0

我建议您在发送答案之前先阅读您的答案:P无法读取一遍,而不会提示您为每次后续编辑重新加载它 – Hubro 2012-04-27 21:56:31

+0

@Codemonkey:是的,对不起。首先,我放错了其中一条评论,然后才意识到他要求* 8个字符。这是一个可怕的想法密码限制... – 2012-04-27 21:58:41

+0

这是,它这样说的问题:-) – Hubro 2012-04-27 21:59:10

相关问题