【发布时间】:2016-07-01 16:02:17
【问题描述】:
我有一个输入数字字段,它应该允许最多 4 个小数点前的数字和最多 1 个小数点后的数字或最多 6 个不带小数点的数字。 例如。有效 1.2、113.5、1234.5、456789。
我在按键上使用了这个 RegEx ^\d{0,4}\.?(\.\d{0,1})?$。它工作正常,但只有在显示像 113.55 这样的数字后才会给出错误。我该如何解决这个问题?
我的按键功能:
函数 OnKeyPress(e,DivID) {
if ( e.which != 8 && e.which != 0 && e.which != 13 && e.which != 46 && (e.which < 48 || e.which > 57)) {
return false;
}
var val = j$('[id$='+DivID+']').val();
if(DivID == 'ProximityCPPercentage')
{
var x = event.which || event.keyCode;
if(val.indexOf('.') >= 0 && e.which == 46)
return false;
else if(e.which == 46 && val.length == 3)
return false;
if(val.indexOf('.') == 0)
val = '0' + val;
if(e.which != 46)
{
strval = val + String.fromCharCode(x);
var re = /^((.|0|[1-9]\d?)(\.\d{1})?|100(\.0?)?)$/;
if(!re.test(strval))
return false;
}
}
else if(val.indexOf('.') > 0)
{
if(e.which == 46 )
return false;
var arra = val.split('.');
var decval = arra[1];
var val = arra[0];
if(val.length > 6)
return false;
if(decval.length > 0)
return false;
}
else if(e.which != 46 )
{
if(val.length > 5)
return false;
}
}
【问题讨论】:
-
使用两个正则表达式 -
/^\d{0,4}[.]\d{0,1}$/&/\d{6}/? -
^\d{0,4}([.\d]\d)?$ -
.4是一个有效值吗?那么4.呢? -
您需要更准确地定义可接受的模式。是“1”。公认? “123”是否被接受?是否接受“.3”?另外,您到底想在按键上发生什么?您想取消/忽略导致模式不匹配的按键吗?你能告诉我们你的按键处理代码吗?您是否考虑过在输入元素上使用
pattern属性? -
接受的值为 1,12,123,1234,12345,123456,0.1,1.1,12.1,123.1,1234.1。文本字段不应允许输入这些以外的内容。
标签: javascript regex