我正在开发asp.net Web应用程序项目。
我从TextBox中获取输入。 TextBox必须允许大于零的数值,并且必须在小数后有两位数。
我在javascript中验证文本框。
请建议我正则表达来实现它。
在我的代码中,它在某些情况下失败了。
var conversionRate = $.trim($("#ConversionTextBoxID").val());
if (conversionRate == "") {
// alert("Please Enter Conversion Rate.");
modalWin.ShowMessage('Please Enter Conversion Rate.', 200, 400, 'Message');
return false;
}
else if (Number(conversionRate) == 0) {
//alert("Please enter value greater than zero for Conversion Rate.");
modalWin.ShowMessage('Please enter value greater than zero for Conversion Rate.', 200, 400, 'Message');
return false;
}
else if (Number(conversionRate) == 0.00) {
// alert("Please enter value greater than zero for Conversion Rate.");
modalWin.ShowMessage('Please enter value greater than zero for Conversion Rate.', 200, 400, 'Message');
return false;
}
if (Number(document.getElementById('ConversionTextBoxID').value) > 999.99) {
modalWin.ShowMessage('Please Check Current Conversion Rate.It Can Not Exceed 999.99.', 200, 400, 'Message');
// alert("Please Check Current Conversion Rate.It Can Not Exceed 999.99.");
return false;
}
if (Number(document.getElementById('ConversionTextBoxID').value) < 0) {
// alert("Please Check Current Conversion Rate.It Can Not be less than Zero.");
modalWin.ShowMessage('Please Check Current Conversion Rate.It Can Not be less than Zero.', 200, 400, 'Message');
return false;
}
if (document.getElementById('ConversionTextBoxID').value.indexOf(".") == -1) {
//alert("Please enter decimal value for Currency Conversion Rate.");
modalWin.ShowMessage('Please enter decimal value for Currency Conversion Rate.', 200, 400, 'Message');
return false;
}
if (String(Number(document.getElementById('ConversionTextBoxID').value)).indexOf(".") < (String(Number(document.getElementById('ConversionTextBoxID').value)).length - 3)) {
// alert("Conversion Rate can have only two digits after Decimal.");
modalWin.ShowMessage('Conversion Rate must have only two digits after Decimal.', 200, 400, 'Message');
return false;
}
在某些情况下失败了。 例: 12.0它失败了(我不想允许这个)。 12.1失败了。
在其他情况下,它的工作正常。
因此,如果有任何简单的方法或正则表达式,那将非常有用。
答案 0 :(得分:0)
试试这个(我假设12.00有效,但12,12.0不是):
function validate(s) {
var n = Number(s)
if (n > 0 && n <= 999.99) {
if (!s.match(/\d{1,3}\.\d{2}/)) {
return console.log("invalid")
}
} else {
return console.log("invalid")
}
console.log("valid")
}
答案 1 :(得分:0)
尝试此操作,但这样可以让您可以为该检查添加条件
/[0-9]+\.[0-9]{2}([^0-9]|$)/
答案 2 :(得分:0)
如果您正在寻找,(15,15.0无效)但(15.00)有效。 试试吧,
^([1-9] {1,2})(\。[0-9] {2})$
否则,如果您正在寻找15,15.00有效但15.0无效 然后尝试..
^([1-9] {1,2}){1}(\。[0-9] {2})?$
工作小提琴链接.. http://regex101.com/r/mN1iT5/4