2012-03-23 19 views
0

可選逗號表達我需要一個正則表達式,其允許數字和可選的逗號,而是整個長度不能大於6經常用於與6個字符的限制

^[0-9]+([,]*[0-9]+)*$允許號碼和可選的逗號。

^([0-9]+([,]*[0-9]+)*){0,6}$不限制的總長度爲6

+0

那是可選的*逗號*(複數)還是隻有一個逗號? – JYelton 2012-03-23 15:03:52

+0

查看一些匹配的示例和其他不匹配的示例會很有幫助。 – Birei 2012-03-23 15:08:23

+0

逗號可以引導和/或拖尾嗎?多個逗號?多個逗號按順序? ',2,3,'會有效嗎? – 2012-03-24 15:52:14

回答

2

如果您正則表達式引擎支持向前斷言—大多數人—那麼你可以這樣寫:

^(?=[0-9,]{1,6}$)[0-9]+(,[0-9]+)*$ 

(?=[0-9,]{1,6}$)部分是「積極的前瞻斷言」,並且意味着「從字符串的這一點開始向前看,我看到[0-9,]{1,6}$」。所以,從本質上講,上述正則表達式是這兩個的組合:

^[0-9,]{1,6}$ 
^[0-9]+(,[0-9]+)*$ 

並強制它們兩者。

(這就是說,它很可能是清晰的,如果你只是執行長度限制作爲單獨的步驟,而不是合併上述成一個單一的正則表達式。)

+0

這個伎倆。謝謝! – BladeHal 2012-03-23 15:26:42

+0

@BladeHal:不客氣! – ruakh 2012-03-23 15:27:10

0
^([\,0-9]{0,6})$ 

此正則表達式簡單地允許任何字符(逗號,0到9)通過零六次。

如果您需要輸入開始與多家,使用此:

^([0-9]{1}[\,0-9]{0,5})$ 
+1

我想OP不希望字符串在一行中包含多個逗號,或者以逗號結尾。 – ruakh 2012-03-23 15:02:44

+0

也許不是,儘管他確實說過***逗號,因爲它可以有多個。 – JYelton 2012-03-23 15:06:32

+0

@ruakh - 通過他的正則表達式示例,可能是'4,,5',然而,@JYelton - 它也看起來像它必須有數字書擋,但是你的匹配是'4,5,' – sln 2012-03-23 15:36:09

0

一些附加的方式 -

^(?=.{1,6}$)\d+(?:,?\d)*$ 

^(?=.{1,6}$)\d(?:[,\d]*\d)?$