[英]Java String.matches() regular expressions
我正在嘗試使用matches()函數檢查某些情況下用戶輸入的密碼
“包含六個字母數字字符,至少一個字母和一個數字”
這是我目前檢查字母數字字符的條件
pword.matches("([[a-zA-Z]&&0-9])*")
不幸的是,在使用“ rrrrZZ1”作為密碼的示例中,此條件仍然返回false
正確的正則表達式是什么? 謝謝
這里的其他人可能證明我錯了,但是如果沒有一個過於復雜的正則表達式,這將很難做到。 我將只使用非正則表達式方法。 為每個條件設置3個布爾值,遍歷字符並在滿足每個條件時設置每個布爾值,如果所有3個布爾值都不等於true,則驗證失敗。
您可以使用以下簡單的方法:
public boolean validatePassword(String password){
if(password.length() < 6){
return false;
}
boolean foundLetter = false;
boolean foundNumber = false;
for(int i=0; i < password.length(); i++){
char c = password.charAt(i);
if(Character.isLetter(c)){
foundLetter = true;
}else if(Character.isDigit(c)){
foundNumber = true;
}else{
// Isn't alpha-numeric.
return false;
}
}
return foundLetter && foundNumber;
}
我同意ziesemer-使用validatePassword()方法而不是將其塞入正則表達式中。
對於開發人員而言,更具可讀性。
如果您確實想沿着正則表達式路徑前進,則可以使用零寬度正向超前行來實現。
包含六個字符,至少一個字母和一個數字:
^.*(?=.{6,})(?=.*[a-zA-Z]).*$
我將您的六個alphanumeric characters
更改為僅characters
。 支持更復雜的密碼:)
關於該主題的好文章:
http://www.zorched.net/2009/05/08/password-strength-validation-with-regular-expressions/
也將此書簽添加為書簽:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.