2013-07-02 51 views
0

目前我試圖創建一個正則表達式來驗證這需要輸入到包含每個以下中的至少一個的用戶輸入字段:驗證在Java腳本

  • 一個大寫字符
  • 一個數字
  • 下列特殊字符中的一個:& @ ! # +

我試圖創建一個正則表達式,將正確地驗證輸入:

/^([a-zA-Z+]+[0-9+]+[&@!#+]+)$/i.test(userpass); 

但是,輸入未正確驗證。我應該怎麼做呢?

+1

你的正則表達式要求所有的字母是第一位的,然後所有的號碼,那麼所有的特殊字符。另外,你在每個組中都允許使用「+」,爲什麼? – Barmar

+0

@ Qantas94Heavy - 特殊字符列表在OP的正則表達式中。在行之間閱讀我認爲他們希望測試字符串至少包含一個「特殊」字符,至少一個字母和至少一個數字,但是該正則表達式根據Barmar的評論強制執行特定順序。 – nnnnnn

+0

[密碼驗證正則表達式]的可能重複(http://stackoverflow.com/questions/5068843/password-validation-regex) – Toto

回答

1

試試這個:

/[a-z]/i.test(userpass) && /[0-9]/.test(userpass) && /[&@!#+]/.test(userpass) 
+0

thnx兄弟.....現在它的工作... –

1

你可以先行簡化正則表達式

^(?=.*[&@!#+])(?=.*[A-Z])(?=.*\d).+$ 
    ------------- --------- ------- 
     |  |   |->match only if there's a digit ahead 
     |  |->match only if there's a uppercase alphabet ahead 
     |->match only if there's any 1 of [&@!#+] 

[A-Z]將匹配一個大寫字母

\d將匹配單個數字


或使用search

if(input.search(/\d/)!=-1 && input.search(/[&@!#+]/)!=-1) && input.search(/[A-Z]/)!=-1)