正则表达式检查一个值必须只允许小数点后两位数?

时间:2014-04-29 12:55:02

标签: javascript asp.net regex

我正在开发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失败了。

在其他情况下,它的工作正常。

因此,如果有任何简单的方法或正则表达式,那将非常有用。

3 个答案:

答案 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