2012-05-05 46 views
0

我有一個字符串解析字符串,並確保它ontains一個9位數的號碼

//webcache.googleusercontent.com/search?hl=en&lr=&rlz=1G1GGLQ_IWIL297&q=cache:UadRLVLrpCQJ:http://www.buy.com/prod/pny-geforce-9800-gx2-1gb-512-bit-ddr3-600mhz-pci-e-2-0-dual-dvi-hdmi/207534756.html%2BVCG98GX2XPB%2Bsite%253Abuy.com&ct=clnk 

如何檢查,如果它包含的9位數字的序列?在這個例子中,它具有207534756

我嘗試這樣做:

String resultString = Regex.Match(i.ToString(), @"\d+").Value; 
if (resultString.Length == 9){} 

,但它不工作

回答

5

試用@"[0-9]{9}"。它將連續匹配9個數字。

編輯:更準確地說是還確保周圍沒有其他的數字:@"(^|[^0-9])[0-9]{9}([^0-9]|$)"

+1

+1:這是迄今唯一一個排除Unicode數字的答案。在.NET中,當你只需要數字0-9時,你應該總是使用'[0-9]'而不是'\ d'。 –

+0

這個問題沒有說明與內容編碼相關的任何內容,但是我讚賞你願意閱讀這個問題。提供額外信息的好工作! – Jay

4

只需使用Regex.IsMatch和正則表達式具有重複長度說明:

if(Regex.IsMatch(i.ToString(), @"\d{9}")) { 
    // ... 
} 
+2

@Jay:我...什麼? – Ryan

+0

對不起,我在黑暗中點綴了一下! – Jay

1

更改正則表達式以匹配9位數字符串:

@"\d{9}" 

而且,因爲使用的是Regex.Match只返回第一匹配當前的代碼不起作用。

您應該使用Regex.Matches並循環播放結果。

0

「\ d {9}」

http://www.w3schools.com/jsref/jsref_obj_regexp.asp這僅僅是一個很好的參考...還有RegexBuddy ...只是谷歌正規表參考

+4

有兩件事情:1.見http://w3fools.com爲什麼w3schools不是一個好的參考。 2.一個更好的參考是http://www.regular-expressions.info – Oded

+0

他是一個初學者,如果我不這樣說,我自己認爲這是你的愚見:P – Jay

+2

在_my_ opinion ???你在說什麼? – Oded