jQuery和RegEx:获取数字范围作为输入

时间:2012-10-23 07:29:01

标签: javascript jquery regex

我创建了一个Web应用程序,我需要输入一系列数字作为输入:

Ex:1-10,0-100等。

以下是我用来将范围变为变量“s”并显示它的代码。而#ucode是我用来获取输入的文本框的ID。

//JavaScript
function validate() {
    var i = $("#ucode").val(); //input
    i = i.replace(/ /,'');
    var constraint = /([0-9]+[,-])?[0-9]+$/;
    if(!constraint.test(i))
    {
        alert("Invalid Expression");
        return;
    }
    var a = i.split(","); //split and array
    var s = "";           //output string
    if(a != "")
    {
        for(n = 0; n < a.length; ++n )
        {
            var conh = /^[0-9]-[0-9]$/;
            var conc = /^[0-9]+$/;
            if(conh.test(a[n]))
            {
                var range = a[n].split("-");
                var ll = parseInt(range[0]);   //lower limit
                var ul = parseInt(range[1]);   //upper limit
                if(ul < ll) { alert("Invalid Expression"); return; }
                for(m = ll; m <= ul; ++m)
                    s += " " + m;
            }
        }
        alert(s); // Alert output
    }
}

问题是这个功能适用于范围1-9而不是

如果我给1-9,它会显示

1 2 3 4 5 6 7 8 9

如果我给1-2,5-9,它会显示

1 2 5 6 7 8 9

但如果我超过9,即1-10或5-45,它会显示blank警报消息。

我哪里错了?请帮我 提前致谢

2 个答案:

答案 0 :(得分:3)

首先,我感谢@NullPointer的Idea,以及@Jeff在哪里使用它。

问题出在if()条件下。所以我改变了代码如下,它工作正常。

var conh = /^[0-9]+-[0-9]+$/; //Now it matches any number of digits.
if(conh.test(a[n]))
{
  .
  :
}

现在它运作正常。谢谢朋友们。

答案 1 :(得分:1)

因为它就像

[0-9]   Find any digit from 0 to 9

尝试类似

的想法
[0-9]|[0-9][0-9]

检查
    http://www.regular-expressions.info/brackets.html

    http://www.regular-expressions.info/repeat.html