2012-04-27 66 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

相關問題