【发布时间】:2016-03-22 09:36:18
【问题描述】:
允许Integer 和Decimal 作为输入。并限制总长度不应大于 11(输入的最大长度,包括小数点)
例如。允许的值为
1.0、1.123546、12345678912、12.12345678等。
即如果值包含Decimal 点,则在Decimal 点之后允许至少一个digit,否则允许具有最大长度的完整整数,即11
我已将正则表达式声明为:
/^-?(([0-9]{0,11}) | ([0-9]{0,9}.[0-9]{1,2}))$/
我测试的值是:6666666.666
但结果总是不匹配。
注意:如果小数点前的数字长度为 7,则允许小数点后 3 位,以防最大允许长度为 11。
Fractional 部分长度根据integral 部分决定。
------------ JQuery函数---------- --------------
function Validate(sender, precision)
{
var variable;
if (precision != "0")
{
var valueLength = sender.value.indexOf('.');
if (sender.id.indexOf("Longitude") > -1)
variable = "-?[0-9,]{0," + parseInt($(sender).attr("data-length") - (parseInt(precision) + 1)) + "}[.][0-9]{0," + parseInt(precision) + "}$";
else
variable = "-?(([0-9]{0," + parseInt($(sender).attr("data-length")) + "})|([0-9]{0," + parseInt($(sender).attr("data-length") - 2) + "}.[0-9]{1," + parseInt
($(sender).attr("data-length") - (valueLength + 2)) + "}))$";
}
else
variable = "-?[0-9,]{0," + parseInt($(sender).attr("data-length")) + "}$";
var re = new RegExp('^' + variable);
if (sender.value != "")
{
if (!re.test(sender.value))
{
alert('Not Matched');
}
else
{
alert('Matched');
}
}
}
【问题讨论】:
-
交替周围的空格是复制/粘贴错误吗?如果没有,请删除它们。
-
为什么不单独检查长度呢?
if ((sender.value+"").length <= 11) -
@Uchiha 这很好!
-
谢谢@bobblebubble