2012-09-07 46 views
0

我正在使用JQuery Validation Engine庫。我試圖通過Regexcustom method創建自定義驗證來驗證字段輸入。jquery驗證引擎中整數範圍的自定義驗證規則

我會建議這個驗證名稱爲custom integer validation containing integer range or some integers separated by comma(s) or combination of both

這裏是標準:

  1. 可以輸入任何整數。對於例如89
  2. 可以輸入任何整數範圍。對於例如12-1815-18但不是19-3 (range should between min to max)
  3. 可以輸入以逗號(,)分隔的上述兩個輸入的任意組合,逗號之間只有空格或無空格。對於例如1-6, 5, 8-13, 7但不是-3-5 (not -3)3-7-, 10 (not 7-)

我試過這個自定義規則:

"integerRangeComma": {      
      "regex": /^(([0-9]+)([\,]([0-9]+))?|([\,]([0-9]+))?)$/, 
      "alertText": "* Invalid floating decimal number" 
      }, 

我預期的目的做上述驗證:

我總文件的列表,可以假設12 。我在表單中創建了一個文本框來接受他不喜歡在他的個人資料中添加的文檔。上述標準應適用於此。

我的下一個問題是,我也必須驗證用戶輸入的數字不大於12 (my presumption)

我該如何通過創建自己的自定義規則或其他方法來實現這一點。

在此先感謝。

+0

我們展示您的自定義驗證腳本是怎麼回事 – Alexander

+0

讓我更清楚,[你嘗試過什麼?](http://whathaveyoutried.com) – Alexander

+0

你應該更新你的問題 – Alexander

回答

2

用正則表達式做數學總是很痛苦,你應該解析它並用代碼檢查不大於12的條件。然而,可能的是這個簡單的例子,通過使用

[0-9]|1[12] 

你的組合爲一個單一的整數或範圍的輸入,然後將

number(-number)? 

以及用於一個輸入或兩個逗號分隔的人是

input(\s*,\s*input)? 

如果你想超過兩個,使用*無限或{0,n}爲repetion有限的,而不是?

所以綜合起來,你會得到

var integerRangeComma = {      
    "regex": /^([0-9]|1[12])(-[0-9]|-1[12])?(\s*,\s*([0-9]|1[12])(-[0-9]|-1[12])?)?$/, 
    "alertText": "a single page number until 12 or an interval in them, or two of those separated by a comma" 
}; 
+0

它似乎在工作。我也想把它作爲必填字段,那麼我應該在哪裏改變。 –

+0

不是那個正則表達式拒絕空字符串嗎?我不知道你的插件,檢查它的文檔如何進行所需的輸入。 – Bergi