我创建了一个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
警报消息。
我哪里错了?请帮我 提前致谢
答案 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