在我的Web應用程序中,我有以下要求。當用戶首次註冊時設置密碼時,我有以下限制。Java - 密碼策略驗證
- 密碼應包含6位數字。 (例如132715)
- 只有號碼可以輸入
- 沒有升/降允許數目(例如123456,654321 - 不允許)例如121715,232254
- 3(或更多)相同數量的不能重複( - 不允許)。
任何人都可以澄清,如果這可以通過正則表達式來完成,還是更好地通過Java實現。如果可能的話,請給我一個示例代碼?
在我的Web應用程序中,我有以下要求。當用戶首次註冊時設置密碼時,我有以下限制。Java - 密碼策略驗證
任何人都可以澄清,如果這可以通過正則表達式來完成,還是更好地通過Java實現。如果可能的話,請給我一個示例代碼?
你的問題似乎很有趣,所以我想我會放棄它。這應該做你正在尋找它做的事情,雖然我沒有徹底測試它。那裏可能有更簡單的解決方案。
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;
}
有了這麼多的限制,我認爲你應該使用Java來驗證它。
您可以使用Apache Commons的StringUtils來幫助您。
這可以用正則表達式來完成。然而,你不能只是跳上,期待一個答案。請向我們展示一些您已經嘗試或關注過的主題。 – 2012-07-24 17:30:18
我認爲只有1和2可以用正則表達式完成。 – elias 2012-07-24 17:30:32
1和2很容易,長度匹配和匹配^ [\ d] + $,3只是2例,4需要一些代碼,但不會特別困難。 – lynks 2012-07-24 17:30:43