关于regex:jquery验证引擎中整数范围的自定义验证规则

custom validation rule for integer range in jquery validation engine

我正在使用jquery验证引擎库。我试图通过Regexcustom method创建自定义验证来验证字段输入。

我建议这个验证名称为custom integer validation containing integer range or some integers separated by comma(s) or combination of both

以下是标准:

  • 可以输入任何整数。例如,89
  • 可以输入任何整数范围。例如,12-1815-18,但不包括19-3 (range should between min to max)
  • 只能输入用逗号(,)分隔的以上两个输入的任意组合,逗号之间不能有空格。例如,1-6, 5, 8-13, 7。但不是-3-5 (not -3)3-7-, 10 (not 7-)
  • 我尝试了这个自定义规则:

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

    我进行上述验证的目的是:

    我有一份总文档清单,假设是12。我在表单中创建了一个文本框来接受文件号,他喜欢添加到他的个人资料中。以上标准应适用于此。

    我的下一个问题是,我还必须确认用户输入的数字不大于12 (my presumption)

    如何通过创建自己的自定义规则或其他方法来实现这一点。

    事先谢谢。


    使用regex进行数学运算总是一件痛苦的事情,您应该解析它并用代码检查不大于12的条件。但是,对于这个简单的示例,可以使用

    1
    [0-9]|1[12]

    输入单个整数或范围的组合将是

    1
    number(-number)?

    对于一个输入或两个逗号分隔的输入

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

    如果你想要两个以上,用*表示无限,用{0,n}表示有限的代表,而不是?

    所以你们在一起

    1
    2
    3
    4
    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"
    };