2009-12-21 97 views
-1

好了,所以我終於想通了,我需要以下條件:字母至少有1字

因此正則表達式來執行:

  1. 字母數字
  2. 至少1
  3. 必須有4和8之間字符(或字母/數字)。

即一個字母數字字符串,它必須至少有一個字母,長度在4-8之間。 (所以它不能只是所有的數字或只是所有的字母)。

所有這些都可以在一個正則表達式中完成嗎?

+0

由字符我的意思是信,而4-8我的意思是任何字母。 – mrblah 2009-12-21 15:35:44

回答

1

2號和3號似乎相矛盾。下面將匹配的字母數字之間4和8:

/[0-9a-zA-Z]{4,8}/ 
+1

2不矛盾3,但是是多餘的。 – 2009-12-21 15:29:42

+0

@Nick Dixon-取決於你將它們解釋爲意義! – RichardOD 2009-12-21 15:30:45

+0

我在上面澄清了我的帖子。 – mrblah 2009-12-21 15:38:44

0
[a-zA-Z0-9]{4,8} 

第一部分指定的字母數字,而第二部分的4至8個字符指定。

0

嘗試:[A-ZA-Z0-9] {4,8}

11

我假設你的意思alphaunumeric,至少一個,和4到8個字符。

試試這個:

(?=.*[a-zA-Z])[a-zA-Z0-9]{4,8} 
  • (?= - 我們使用lookahead,所以我們可以檢查的東西,而不會影響比賽

  • .*[a-zA-Z]的其餘部分 - 匹配任何其後通過一封信,即檢查我們是否至少有一封信

  • [a-zA-Z0-9]{4,8} - 這將匹配一個字母或數字4到8次。

不過,你說的本意是「它不能僅僅是所有數字或只是所有字母」,而是要求1,2和3沒有做到這一點,因爲它可以將所有字母和滿足所有三項要求。這是可能的,你想要這個,有一個額外的先行確認有至少一個數字:

(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]{4,8} 

使用的a-zA-Z不是很國際友誼賽,所以你可以使用轉義碼爲「信」會更好如果有正則表達式的味道。

此外,我希望這不匹配可接受的密碼,因爲4個字符可能不夠長。

+0

我就是這麼讀的。 – 2009-12-21 15:34:41

+0

**。*** **** **。+ ** – serhio 2009-12-21 16:01:10

+0

它不應該是+,因爲它不會匹配1aaa。 – 2009-12-21 23:50:41

1
?Regex.IsMatch("sdf", "(?=.+[a-zA-Z])[a-zA-Z0-9]{4,8}") 
false 
?Regex.IsMatch("sdfd", "(?=.+[a-zA-Z])[a-zA-Z0-9]{4,8}") 
true 
?Regex.IsMatch("1234", "(?=.+[a-zA-Z])[a-zA-Z0-9]{4,8}") 
false 

警告的**。*。+

// At least one letter does not match with .* 
?Regex.IsMatch("1111", "(?=.*[a-zA-Z])[a-zA-Z0-9]{4,8}") 
false 

?Regex.IsMatch("1aaa", "(?=.+[a-zA-Z])[a-zA-Z0-9]{4,8}") 
true 
相關問題