好了,所以我終於想通了,我需要以下條件:字母至少有1字
因此正則表達式來執行:
- 字母數字
- 至少1 信
- 必須有4和8之間字符(或字母/數字)。
即一個字母數字字符串,它必須至少有一個字母,長度在4-8之間。 (所以它不能只是所有的數字或只是所有的字母)。
所有這些都可以在一個正則表達式中完成嗎?
好了,所以我終於想通了,我需要以下條件:字母至少有1字
因此正則表達式來執行:
即一個字母數字字符串,它必須至少有一個字母,長度在4-8之間。 (所以它不能只是所有的數字或只是所有的字母)。
所有這些都可以在一個正則表達式中完成嗎?
[a-zA-Z0-9]{4,8}
第一部分指定的字母數字,而第二部分的4至8個字符指定。
嘗試:[A-ZA-Z0-9] {4,8}
我假設你的意思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個字符可能不夠長。
我就是這麼讀的。 – 2009-12-21 15:34:41
**。*** **** **。+ ** – serhio 2009-12-21 16:01:10
它不應該是+,因爲它不會匹配1aaa。 – 2009-12-21 23:50:41
?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
由字符我的意思是信,而4-8我的意思是任何字母。 – mrblah 2009-12-21 15:35:44