2012-03-09 126 views
1

我對設置密碼規則有一個奇怪的要求。 我的要求是設置密碼規則,只允許大寫字母和min.password長度爲5,最大密碼lenght是8.我曾經因此下面的表達式..密碼規則的正則表達式

^(?=.*[A-Z]).{5,8}$

但是,它確實不這樣工作。後來我才知道[A-Z]並不意味着只允許使用大寫字母,而是至少應該是大寫字母。 它適用範圍{5,8},請指導我完成只允許大寫字母的其他要求。 我們可以嘗試設置否定所有其他的東西嗎?如果是這樣,那麼請讓我知道寫出否定的方式嗎?

在此先感謝..

+1

這是一個非常糟糕的密碼規則。 – 2012-03-09 21:09:12

+0

hehe ..雅,但這是我們的要求(一個奇怪的一個;)).. :) – NoviceCoder 2012-03-20 12:34:26

回答

3

以下聽起來像是你的描述最簡單的實現:

^[A-Z]{5,8}$ 

我不知道你爲什麼會需要像(?=...)什麼是「零寬度正期待」。只要匹配字符串,沒有任何棘手。

+0

好的答案,但你爲什麼改變量詞?它應該有逗號而不是短劃線=>'^ [A-Z] {5,8} $' – stema 2012-03-09 10:02:15

+0

@stema:我想這取決於你的正則表達式引擎的方言。爲了保持一致性,我會將其改爲逗號。 – 2012-03-09 10:05:21

+0

出於興趣,哪種方言使用破折號?我從來沒有見過它。 – stema 2012-03-09 10:06:59

2

的規則應該是這樣的:

^(?=[A-Z]{5-8}$) 

這意味着:5-8 A-Z字母后跟結束的字符串。請注意,我已經把$ IN的(),這樣您就可以添加其他規則/消耗串

^(?=[A-Z]{5-8}$)(?!A+$) 

例如,這是同一加上「只A」所以沒有AAAAAAAAAAA排除規則。 ..

+0

Thanq ..提高我的支持..:D – NoviceCoder 2012-03-11 12:37:30