2010-05-27 97 views
9

我試圖創建一個正則表達式,它接受: 一個空字符串,一個整數或多個用逗號分隔的整數,但不能有逗號和開始和結尾。正則表達式:逗號分隔的整數

我設法找到這一點,但我不能undertsand如何刪除位數限制

^\d{1,10}([,]\d{10})*$ 
+0

注意'[,]'相當於','你可能打算寫'([,] \ d {1,10})*'而不是'([,] \ d {10})*'。 – 2010-05-27 13:29:01

回答

30

您發佈仍然事情需要至少1的整數,所以它不會匹配一個空字符串:

這裏是你需要的東西:

^(\d+(,\d+)*)?$ 

闡釋:

  1. 把整個事情在括號中和結束與'?'所以以匹配空字符串。
  2. 總是以整數開始,所以'\d+'.也就是說1個或多個數字字符('0'-'9')
  3. 然後,讓一組包含',\d+'括號,並把一個星號之後。 3a。裏面的意思是以','開始,然後是整數。 3b。星號表示在括號內重複0次或更多次。

亨奇整件事是either an empty string or start with an integer then repeat zero or more times a string which starts with a comma and ends with an integer

+0

所有的工作,但我不得不選擇一個,先來先服務了,謝謝:) – 2010-05-27 13:39:35

+1

@Metzu,請注意,第一個不匹配空字符串... – tster 2010-05-27 13:40:54

+0

這應該被標記爲正確的答案 – Spike 2011-12-16 17:20:53

3

{1,10}{10}的範圍。您可以用+替換它們以獲得無限正面效果。例如:

^\d+([,]\d+)*$ 
+2

你可以忽略逗號周圍的方括號。 – 2010-05-27 13:25:23

+0

你說得對。 – troelskn 2010-05-27 15:02:30

1

嘗試以下操作:

^(\d+(,\d+)*)?$ 
+0

謝謝你:) – 2010-05-27 13:40:20

相關問題