2012-12-04 203 views
0

我需要正則表達式來匹配從數字開始的字符串(數字可以是整數或浮點數)。例如:需要正則表達式來匹配以數字開頭的字符串

100px 
100 px 
1.0ft 
1.0 ft 
0.001ft2 
0.001 ft2 

我是這個東西的新手,有誰能幫助我嗎?我已經嘗試過這樣的:

Regex numberBeginRegex = new Regex(@"([\d]+|[\d]+[.][\d]+)."); 
+0

這些例子是否爲完整字符串,並且您想驗證其正確格式?或者你想在更大的輸入字符串中找到像這樣的子字符串? –

回答

3

你可以使用這個表達式: -

"(\d+(\.\d+)?).*" 

(\d+(\.\d+)?) - 整數或浮點數相匹配。小數部分是通過使用?量詞,它是指由可選 - match 0 or 1


其實你的正則表達式將有太多的工作,但你忘了把*量詞在.結束: -

"([\d]+|[\d]+[.][\d]+).*" // Note the `*` at the end 
+0

'。*'在這裏是多餘的... – Anirudha

+0

@ Some1.Kill.The.DJ ..爲什麼?它需要匹配下面的字符串。 –

+0

如果你不使用分組,那麼它也會匹配'435.5px hello world'..OP希望輸出像'100px''100 px''1.0ft' – Anirudha

0

如果你想檢查他們是否以一個數字開頭,你可以使用substring()得到第一個字符

+0

像這樣的答案是乞求代碼... –

+0

'string mysubject =「...」;如果(char.IsDigit(mysubject.FirstOrDefault())...' – hometoast

1

你可以使用這個正則表達式

var [email protected]"^(\d+(\.\d+)?).*"; 
List<string> nums=Regex.Matches(inp,reg,RegexOptions.Multiline) 
         .Cast<Match>() 
         .Select(x=>x.Value) 
         .ToList();  
相關問題