2013-01-10 94 views
1

我正在嘗試編寫規則表達式來驗證SQL IN子句,其中括號內的值是數字(ids)(例如(23,109,1)但不是(23,109)或(23 ,,)或() 。SQL IN子句RegEx

我現在的表現是:

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

,但它也允許錯誤的價值觀。

我不是在regural表現確實不錯,也嘗試過這樣的:

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

,但我想這不是問題的關鍵。
任何想法?

+0

也許會在代碼中生成IN子句的位置發佈一段代碼。在那裏可能更容易處理。另外,你可以將它改爲SQL JOIN。 – ficuscr

+1

我會做一些像['\([0-9] + \ s *(,\ s * [0-9] + \ s *)* \)'](http://rubular.com/r/3YVCFbSgjH) – NullUserException

回答

3

你的第二次嘗試幾乎是在那裏;問題是,^\(([0-9]+,)+\)$需要尾隨逗號。我們試試^\([0-9]+(,[0-9]+)*\)$

不知道你的正則表達式庫/方言;也許還有很多需要改進的地方(數字的\ d;允許元素之間的空格等)。

+0

謝謝!我想這是正確的答案。空間對我來說不是問題,因爲我早先刪除了所有的空格。 – gysyky