2012-12-04 164 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();  
相关问题