我想獲得一個有效的正則表達式在Java(java.util.regex包),用於驗證以下格式來使用(= X):正則表達式不能得到特殊結構的工作
一個數字,具有最多15個數字,其中3個MAX位數可以是小數,它們通過隔板preceeded(,)
所以,有效將是:
123456789(15 digits, ok)
123456789,1
[編輯],這些也應該是有效的:
1234567890123,45
123456789012,345
到目前爲止我想出以下正則表達式模式:
Pattern = [0-9]{1,15}(\,[0-9]{1,3})?
此檢查一個範圍爲1到15位,通過一個可選的分離器,隨後另一3位以下。但是,這並不檢查輸入的總長度。有了這個正則表達式,值123456789,123將是有效的。
所以,我想我會添加一個額外的表達式,檢查總長度,並使用「(?=」構建模擬的邏輯和行爲。
所以我開始將是我現有的正則表達式如下:?
Pattern = (?= [0-9]{1,15}(\,[0-9]{1,3})?)
然而,這導致基本上一切,我扔在它失敗了,我不能讓它的工作進一步我沒有看到我在做什麼錯在這裏後一切正常,我想添加另一個表達式來檢查總長度,就像我想的那樣(?=。{16})。
編輯:好像我不是在我的描述不夠具體。我已經添加了一些可能有效的例子。 「問題」是可能少於3位數字,在這種情況下,數字之前的數字可能超過12個字符。 – Martijn 2012-07-13 10:21:39
@Martijn:現在它適用於你所有的例子。 – Keppil 2012-07-13 10:27:03