2012-11-07 25 views
1

我需要使用正則表達式對包含位置信息的字符串進行驗證。正則表達式開始結束位置

例子:

020005254877841100557810AAAAAA841158891BBBB 

我需要拿到賽第5位至10必須是唯一的數字。

我該如何使用RegEx來做到這一點?

+2

你需要一個正則表達式嗎?獲取從5到10的子字符串,並檢查所有字符的所有字符都是數字。 – FailedDev

+0

文件很大,我認爲RegEx會比子字符串更快,我可以更快地進行其他驗證,例如驗證它是數字還是字母,或者如果日期是指定的格式。 – Zingui

回答

7

嗯它真的必須是正則表達式嗎? 我會這樣做。

var myString = "020005254877841100557810AAAAAA841158891BBBB"; 
var isValid = myString.Substring(4, 5).All(Char.IsDigit); 
+1

+1不使用正則表達式。 –

+0

需要與0和9的字符文字進行比較,因爲Enumerable將從字符串返回字符。 –

+0

@nekizalb感謝您指出。更新。 –

-1

建立在FailedDev提到的基礎上。

string myString = "020005254877841100557810AAAAAA841158891BBBB"; 
myString.Substring(5, 5); //will get the substring at index 5 to 10. 
double Num; 
bool isNum = double.TryParse(myString, out Num); //returns true of all numbers 

希望幫助,

+0

如果其中一個字符是句號或字母'e'或以'+'或' - '開頭,則會返回誤報。 「12.34」是一個有效的雙數,所以是「12e34」和「+1234」和「-12.4」和「+ 12E3」。 – JerseyMike

5

如果你絕對必須使用正則表達式,這裏是......(雖然我認爲你應該像喬納斯·W公司的答案去)。

Match m = Regex.Match(myString, "^.{4}\d{5}.*"); 

if(m.Success){ 
    //do stuff 
} 

正則表達式的裝置,「從任何字符的字符串(^),匹配4的開始({4}),則五位數,(\ d {5}),則然而許多的(。*)任何其他字符」

0

如果你真的覺得你必須使用正則表達式,這將是一個:

"^....\d{5}" 

你也可以做多項檢查這樣的:

"^....(\d{5}|\D{5}) 

那一個將匹配所有數字或所有非數字字符,但不是混合或任何空格。