2012-07-24 110 views
-3

在我的Web應用程序中,我有以下要求。當用戶首次註冊時設置密碼時,我有以下限制。Java - 密碼策略驗證

  1. 密碼應包含6位數字。 (例如132715)
  2. 只有號碼可以輸入
  3. 沒有升/降允許數目(例如123456,654321 - 不允許)例如121715,232254
  4. 3(或更多)相同數量的不能重複( - 不允許)。

任何人都可以澄清,如果這可以通過正則表達式來完成,還是更好地通過Java實現。如果可能的話,請給我一個示例代碼?

+0

這可以用正則表達式來完成。然而,你不能只是跳上,期待一個答案。請向我們展示一些您已經嘗試或關注過的主題。 – 2012-07-24 17:30:18

+0

我認爲只有1和2可以用正則表達式完成。 – elias 2012-07-24 17:30:32

+0

1和2很容易,長度匹配和匹配^ [\ d] + $,3只是2例,4需要一些代碼,但不會特別困難。 – lynks 2012-07-24 17:30:43

回答

1

你的問題似乎很有趣,所以我想我會放棄它。這應該做你正在尋找它做的事情,雖然我沒有徹底測試它。那裏可能有更簡單的解決方案。

private static boolean validatePW(String pw) { 
    if(pw.length() == 6){ 
     int pwInt = Integer.MIN_VALUE; 
     try{ 
      pwInt = Integer.parseInt(pw); 
      char[] values = pw.toCharArray(); 
      boolean asc = true; 
      boolean dec = true; 
      int[] map = new int[10]; 
      map[values[0]-48] = 1; 
      for(int i = 1; i < values.length; i++){ 
       asc = asc && values[i] - 1 == values[i-1]; 
       dec = dec && values[i] + 1 == values[i-1]; 
       map[values[i]-48] ++; 
       if(map[values[i]-48] == 3){return false;} 
      } 
      if(asc || dec){ 
       return false; 
      } else { 
       return true; 
      } 
     } catch(NumberFormatException e){ 
      return false; 
     } 
    } 
    return false; 
} 
1

有了這麼多的限制,我認爲你應該使用Java來驗證它。
您可以使用Apache Commons的StringUtils來幫助您。