2011-04-26 72 views
0

有人可以幫助我使用正則表達式驗證軌道嗎?正則表達式細分

目前,它被設置爲確保:

  • 密碼應至少包含一個 整數。
  • 密碼應該包含 至少一個字母表( 或者是小寫或者大寫)。
  • 密碼可以 有特殊字符從20到7E ascii值。
  • 密碼應該是 最少8個,最多40個 字符長。

如何刪除單個十進制數字規則?

/^(?=.*\d)(?=.*([a-z]|[A-Z]))([\x20-\x7E]){8,40}$/

+2

這完全是不應用正則表達式的領域之一。 – Juliet 2011-04-26 02:59:18

+0

有趣的是,我應該如何驗證密碼要求? – stewart715 2011-04-26 03:01:39

+0

@Juliet,同意正則表達式經常被濫用。但我不同意這是*完全是那些次之一。我鼓勵你發佈一個關於如何完成這個*的答案。 – 2011-04-26 03:03:35

回答

2

我打算推薦一個單一的正則表達式來測試你所有的密碼要求。這似乎更容易把它們寫爲許多小的語句:對眼睛

if(password.length >= 8 && 
    password.length <= 40 && 
    password.contains('\d') && 
    password.contains('[a-zA-Z]') && 
    password.contains('^[\x20-\x7E]$')) 
    return true 
else 
    return false 

它多一點自我記錄到將來的維護,並輕鬆了許多。

+0

同意自我記錄。但是這仍然使用正則表達式。其中3人。你說這是* regexed不應用的地方。* – 2011-04-26 13:29:36

0
/^(?=.*([a-z]|[A-Z]))([\x20-\x7E]){8,40}$/ 
1

\ d代表所有號碼數字。你想要:

/^(?=.*([a-z]|[A-Z]))([\x20-\x7E]){8,40}$/