2012-09-07 51 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