我想開發一個正則表達式來驗證一個字符串,它來自我:「TE33」或「FR56」或任何關於2個字母和2個數字的序列。正則表達式 - C中的2個字母和2個數字#
前2個字符必須是字母,最後2個字符必須是數字。
我嘗試了很多組合,但沒有成功。我試過的最後一個:
if(Regex.IsMatch(myString, "^[A-Za-z]{2}[0-9]{2}")){
}
我想開發一個正則表達式來驗證一個字符串,它來自我:「TE33」或「FR56」或任何關於2個字母和2個數字的序列。正則表達式 - C中的2個字母和2個數字#
前2個字符必須是字母,最後2個字符必須是數字。
我嘗試了很多組合,但沒有成功。我試過的最後一個:
if(Regex.IsMatch(myString, "^[A-Za-z]{2}[0-9]{2}")){
}
你錯過了一個結束錨點。
if(Regex.IsMatch(myString, "^[A-Za-z]{2}[0-9]{2}\z")) {
// ...
}
編輯:
if(Regex.IsMatch(myString, @"^[A-Za-z]{2}.*\d{2}\z")) {
// ...
}
這應該不重要,除非您確實需要拒絕比預期時間長的字符串。 – 2012-03-09 19:03:04
這也與最後的錨點相匹配,其他的東西可能就是這個問題。 http://ideone.com/wZk6B – 2012-03-09 19:03:13
即使沒有$ – ebutusov 2012-03-09 19:03:17
這應該讓你:如果你能初始2個字母和最後2個數字之間有什麼從兩個字母開始,以兩個數字結尾。
[A-Za-z]{2}(.*)[0-9]{2}
如果你知道它永遠是隻有兩個和兩個可以
[A-Za-z]{2}[0-9]{2}
只是爲了好玩,這裏是一個非正則表達式(更可讀/維護對於我這樣的傻瓜)解決方案:
string myString = "AB12";
if(Char.IsLetter(myString, 0) &&
Char.IsLetter(myString, 1) &&
Char.IsNumber(myString, 2) &&
Char.IsNumber(myString, 3)) {
// First two are letters, second two are numbers
}
else {
// Validation failed
}
編輯
看來我我誤解了這些要求。下面的代碼將確保前兩個字符,最後兩個字符的字符串驗證的(只要該字符串的長度> 3)
string myString = "AB12";
if(myString.Length > 3) {
if(Char.IsLetter(myString, 0) &&
Char.IsLetter(myString, 1) &&
Char.IsNumber(myString, (myString.Length - 2)) &&
Char.IsNumber(myString, (myString.Length - 1))) {
// First two are letters, second two are numbers
}
else {
// Validation failed
}
}
else {
// Validation failed
}
請注意,IsLetter比A-Z更廣泛**。您也可以使用相同種類的數字檢查。 – 2012-03-09 19:08:18
@AlexeiLevenkov,'A-Z'指出。我以前從未使用過「Char.IsNumber」。感謝您的支持(更新代碼)! – 2012-03-09 19:10:09
-1,解決方案不檢查後面的內容。 – Qtax 2012-03-09 19:13:54
我總是整理這些了上一個正則表達式的測試網站,那麼進入vs.net與我所知道的東西從互動測試中工作。 – 2012-03-09 18:57:54
一個好的測試網站會幫助你,例如http://regexhero.net/tester/ – 2012-03-09 18:59:57
適合我的作品。你的傳入字符串究竟是什麼樣的?你想匹配一個字符串的一部分還是4個字符的整個字符串? – 2012-03-09 19:00:07