2012-05-17 25 views
0
   if (password1.length() >= 15){   
        final String PasswordPattern = "^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])[0-9A-Za-z]{15,}$"; 

        Pattern pattern = Pattern.compile(PasswordPattern); 
        Matcher matcher = pattern.matcher(password1); 

        if(matcher.matches() == true){      

         if (password1.equals(password2)){ 
          SavePreferences(password1.toString()); 
          //Intent intent = new Intent(LockAppActivity.this, ScreenLockActivity.class); 
          Intent intent = new Intent(LockAppActivity.this, PhoneNumActivity.class); 
          startActivity(intent); 
         } 
         else{ 
          pass1.setText(""); 
          pass2.setText(""); 
          Toast.makeText(LockAppActivity.this,"Both passwords are not equal!",Toast.LENGTH_SHORT).show(); 
         } 
        } 

我想要用戶輸入至少15個字符的密碼,必須包含大小寫,數字和符號。但我只知道如何用Capital和Small字母和數字創建圖案...如何在圖案中包含所有符號...請檢查我的圖案代碼部分...謝謝如何強制用戶輸入帶有符號的密碼?

+0

對「符號」更清楚一點,你認爲什麼是符號,什麼不是? Unicode包含很多「符號」... – theomega

+0

Android手機鍵盤上的所有符號 –

+0

與回答問題無關,但:15個字符的最低密碼,帶有大寫,小寫,數字和符號?據推測,對於一部手機,進入這一切(至少)有點乏味?我猜想有些用戶不會喜歡這個要求。 – Beska

回答

2

您可以添加部分(?=.*(\W|_))檢查除字母(A-Z,A-Z,0-9)符號的東西。或者,您可以指定一組符號字符,如(?=.*[\.\*])。如果是這樣,請將[]的內容替換爲您想要允許的所有字符,在每個具有正則表達式函數的字符之前使用反斜槓。 (該示例顯示允許兩個字符的部分,.*。)

然後,您需要頂部更新計數出現次數的部分。由於我們正在處理所有字符現在,我們可以用.替換[0-9A-Za-z],讓我們留下:^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*(\W|_)).{15,}$。由於您將它放在一個Java字符串中,因此將其替換爲兩個\\單個\

請記住,Android鍵盤可以改變,所以並不是所有的鍵盤都保證有相同的符號。

+0

提示:如果你想要把\標誌在正則表達式,你必須給它的字符串 – Pshemo

+0

類型爲「^(=(= * [0-9]。)(= * [AZ]?)? * [az])(?=。* [^ \ W _])[0-9A-Za-z] {15,} $「 我得到此密碼模式的錯誤 –

+0

我的錯誤, (?= * [0-9]。)(= *(\ W?| _))(= * [AZ]。)(= * [AZ]?)。{15,} $」。 – CheeseWarlock

1

它只是你想要的例子。我在我的項目中使用struts完成了這個任務。它滿足你的需求。您還可以添加更多條件。看到這個也是... http://www.asciitable.com/

if (getNewpassword() != null) { 
        int s; 
        for (int i = 0; i < getNewpassword().length(); i++) { 
         s = (int) getNewpassword().charAt(i); 
         if ((s>=33 && s<=64)&&(s>=127&&s<=65)) { 
         } 
    else 
    { 
          errors.add("newpassword1", new ActionMessage("errors.notpwd", "must contains A-Z,a-z and any symbol")); 
    } 
        } 
       } 
+0

s變量將會逐個獲取字符的十進制ASCII值並進行檢查。如果值之間的條件將提交其他錯誤將顯示給用戶 – Maninder

相關問題