2017-04-12 71 views
-1

嗨,我该如何写一个以分号分隔的数字列表的正则表达式?用分号分隔的数字的正则表达式

事情是这样的:

1,2,3,5,7,10 

列表的大小可能会很长。

此外,我需要为十进制数只(例如2.04(最多6位小数的正则表达式),或者只在格式2或某一整数 但没有,或任何其他值。

这里是我的解决方案,但我在.NET验证

[0-9]+(\.)[0-9]{0,10}|[0-9]+ 
+0

你需要验证,比如'1,2,3,5,7,10'和'1234.345453'字符串?但不是'12.344,32.45554'或'1,3.45,45'?检查[此演示](http://regexstorm.net/tester?p=%5e%28%3f%3a%5b0-9%5d%2b%5c.%5b0-9%5d%7b0%2c6%7d%图7c%5b0-9%5D%2B%28%3F%3A%2C%5b0-9%5D%2B%29 *%29%5CR%3F%24与I = 1%2C2 2C3%%2C5%2C7%2C10%0D %0a12.123456%0D%0a12.1234567%0D%0a12.123456%2C12%0D%0a12.12%2c123.2&O = M)。 –

+0

好的第一个表达式是用于由列(1,2,3,5,6)分隔的整数数字,如示例中所示。没有连接到第一个表达式的第二个表达式是十进制数 – user2171512

+1

1)'^ [0-9] +(?:,[0-9] +)* $'2)'^ [0-9] + \。 [0-9] {0,6} $'(也许'^ [0-9] + \。[0-9] {1,6} $'或'^ [0-9] * \ [0- 9] {1,6} $'会更好)。不要在.NET正则表达式中使用'\ d'(特别是用于验证),它比'[0-9]'多匹配。 –

回答

1

不工作,为第一表达下面的模板适用:

var input = @"The quick 1,2,3 brown fox4,5,6 jumps over the lazy dog"; 
var pattern = @"([0-9],)+[0-9]"; 
var matches = Regex.Matches(input, pattern); 
//matches: {1,2,3} {4,5,6} 

您没有在输入行中指定约束和可能的值,所以我提供了一个简单的模板。因此,对于输入“快速1,2,3棕色狐狸4,5,6跃过懒狗7.0,8.1,9.3”结果将是{1,2,3} {4,5,6 } {0,8} {1,9}

模式的十进制数:

var input = @"The quick 1,2,3 brown fox4,5,6 jumps over the lazy dog7.0,8.1,9.3"; 
var pattern = @"([0-9])+(\.[0-9]{1,6})?"; 
var matches = Regex.Matches(input, pattern); 
// matches: {1} {2} {3} {4} {5} {6} {7.0} {8.1} {9.3} 

如果你想允许像1.号码则可以更改{1,6}到{ 0,6}。

经常有形式0.9十进制数,在这种情况下,你可以使用([0-9]+(\.[0-9]{0,6})?)|([0-9]?(\.[0-9]{1,6}))

相关问题