2011-03-31 102 views
1

我需要驗證我的字符串包含一個或多個數字和一個或多個字母字符。該字符串還可以包含其他字符,如@#$ %%#。等等任何想法?Java正則表達式

+0

以示例更新。 – 2011-03-31 05:07:17

回答

1

不要使用正則表達式這樣的事情 - 寫驗證:

public boolean validate(String val) { 
    int len=val.length(); 

    if(len>=8) { 
     boolean alp=false,dgt=false; 
     for(int xa=0; xa<len; xa++) { 
      char chr=val.charAt(xa); 
      alp|=Character.isLetter(chr); 
      dgt|=Character.isDigit (chr); 
      if(alp && dgt) { return true; } 
      } 
     } 
    return false; 
    } 
1

如果你的意思是位號碼,那麼你可以嘗試\A(?.*\d.*[a-zA-Z].*|.*[a-zA-Z].*\d.*)\z

基本上,這符合以下任一操作:

  • 任何字符(或沒有),後面跟着一個數字,後跟任何字符(或無),後跟一個字母,後跟任何字符(或無)
  • 任何字符(或無),後跟一個字母,後跟任何字符(或無),後跟一個數字,後跟任何字符(或無)

不要忘了在你的模式串:)你的反斜槓加倍

你能得到它也符合一般的數字(即不只是數字)通過用合適的正則表達式代替\d,但是這個正則表達式實際上取決於你想要匹配什麼 - 更多的信息將是有用的。

+0

嘿,Mac,謝謝你的迴應。我正在嘗試驗證密碼輸入。它必須有一個大於8的長度,它必須包含至少一個數字和一個字母字符 – c12 2011-03-31 05:13:57

+0

@ c12:那麼我相信應該做這項工作(除非我完全失去了情節...... :) – Mac 2011-03-31 05:17:22

0

^(?=.*\d)(?=.*\D).{8,}$ - 用8個或更多字符相匹配的字符串,幷包含一個ATLEAST數量和ATLEAST一個非數字字符。

0
\d.*[a-zA-Z]|[a-zA-Z].*\d 

你沒有檢查什麼是你的第一個字母或數字,以及你的最後一封信後會發生什麼/位前

1

您可以驗證,在Java中使用下面的代碼:

if (input.matches("(?=.*\\d)(?=.*\\p{L}).+") { 
    // match 
} 

它測試它至少有一個數字和至少一個unicode字母。它使用積極的前瞻。