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 for Ideaと、@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 に答える