2011-05-25 96 views
0

我試圖找出這條規則正則表達式:這條規則的正則表達式?

「必須包含至少3個和最多5個 數字字符相同的字符可以 重複最多5次而且,長度應!最少10個字符。「

你有沒有ideea?

我開始用這樣的:

^\d{3,5}$ 

但這並限制有分鐘。 3個小數一個接一個,我需要的是可能讓他們插入字母也(最少3和最多5次出現)。

您能幫忙嗎?

+0

這功課嗎? – Vadiklk 2011-05-25 08:59:44

+0

不,這是工作要求。 – 2011-05-25 09:01:04

回答

3

這是可能的正則表達式,但反向引用的需要會使它非常緩慢。

^(?=(?:\D*\d){3,5}\D*$)(?!.*(.)(?:.*\1){4}).{10,} 

描述:

  • (?=(?:\D*\d){3,5}\D*$):確保有3至5個標記
  • (?!.*(.)(?:.*\1){4}):確保有在相同的字符
  • .{10,} 5個拷貝:確保匹配的字符串的長度至少爲10.

更簡單的方法是使用Dictionary<char, int>並對字符進行計數。

3

所有這些條件(長度除外)都非常不適合正則表達式。不受歡迎的:它將採用指數大小的表達式。使用正常的編程方法來計算字母,數字和重複。 - 除非這是正則表達式500的家庭作業,否則使用正則表達式沒有任何意義。

+0

謝謝,我認爲從乾淨的代碼角度來看,使用正則表達式更好,但我同意你所說的。 – 2011-05-25 09:07:04

+0

@Cristian:不,一個複雜的正則表達式很髒。 – kennytm 2011-05-25 09:11:57