2013-12-18 27 views
1

我正在使用RegEx來測試字符串是否有效。該字符串必須以數字([0-9])開始和結束,但可以在其中包含逗號。正則表達式針對少於3個字符的字符串失敗

我想出了這個例子,但是它對於小於3個字符的字符串(例如1151,8一樣有效)失敗。大概這是因爲我專門測試了第一個和最後一個字符,但我不知道有任何其他方式來做這件事。

如何更改此RegEx以符合我的要求。謝謝。

^[0-9]+[0-9\,]+[0-9]$ 
+0

'^(?!,)[0-9,] * [0-9] $' – Wrikken

+0

您是否正在使用Javascript RegEx? –

回答

3

使用此:

^[0-9]+(,[0-9])?$ 

,[0-9]部分將是可選的

可視化:

enter image description here

如果你想允許多個逗號

號碼組......然後用*替換?

如果你想允許逗號後面的數字組(在你的例子中似乎不是這種情況),那麼你應該在該數字組後面加上+

如果這兩個上面所說的期望,最終的正則表達式看起來是這樣的:

^[0-9]+(,[0-9]+)*$ 

enter image description here

+0

在192312,9888上失敗。可能很好從OP得到確切的要求,但到目前爲止它只能以逗號和逗號之間的數字開始和結束。 –

+0

謝謝,但它在'1,2,3' –

+0

@DavidGard上失敗,如果你考慮使用'*'替換'?'的說明,那麼這是不正確的。當我最初閱讀你的問題時,我沒有把它看作是一個用例。 – smerny

0

我會說正則表達式

\d(,?\d)* 

應滿足1個或多個數字,可以僅由一個逗號分隔。注意,1,2失敗

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

應該工作。

在開始處始終有一個或多個數字,可選地後跟任意數量的由一個或多個數字組成的逗號分隔的其他組。

如果你允許彼此相鄰的逗號,那麼第二個+應該是*,我想。

相關問題