2017-04-12 116 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}))

相關問題