2016-11-10 155 views
4

我需要一個Regex,只允許整數(正面和負面的)用逗號2,-3,4分隔的,但是有逗號,應僅在兩個整數中間,在開始或結束或兩個連續逗號,如23,34,,4正則表達式用逗號分隔的整數

目前我有這樣的:

Regex regex = new Regex(@"^\d{1,10}([,]\d{10})*$"); 
if (!regex.IsMatch("123,34,2,34,234")) 

但它似乎並不匹配它甚至拒絕有效輸入任何東西一樣123,34,2,34,234

能否請你指出什麼是錯我的上述正則表達式。

+2

'\ d {10}'只能匹配10位塊。你是不是指'@「^ \ d {1,10}(,\ d {1,10})* $」'? –

回答

5

\d{10}子模式只能匹配10位塊。

您需要允許1到10 {1,10}(或1多用+)與

@"^\d{1,10}(?:,\d{1,10})*$" 

@"^\d+(?:,\d+)*$" 

注意使用不非捕獲組(?:...)的存儲子匹配,並且僅意味着分組子序列。

參見regex demo

編輯:爲了允許匹配負值,添加可選-

@"^-?\d+(?:,-?\d+)*$" 
    ^^  ^^ 

參見another regex demo

+0

這樣做一切都很好,除了它不允許負整數。根據它'2,14,124,-124,2'是無效輸入,但是'2,14,124,124,2'是正確的。 – Maven

+0

只需將可選的連字符添加到模式' - ?'。 「?」量詞匹配1或0次量化子模式。 –

相關問題