3

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

例如: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警报消息。

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

4

2 回答 2

3

首先我感谢 @NullPointer 的想法,感谢 @Jeff 在哪里使用它。

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

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

现在它工作正常。谢谢朋友。

于 2012-10-23T08:05:08.283 回答
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

于 2012-10-23T07:31:05.023 回答