简体   繁体   中英

Regular Expression to check a value must allow only two digits after decimal point?

I'm working on asp.net web application project.

I'm taking input from a TextBox. TextBox must allow a numeric value which is greater than zero and must have two digits after decimal.

I'm validating textbox in javascript.

Please suggest me regular expression to achieve it.

In my code its failing in some cases.

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;
}

It fails in some cases. example: 12.0 it fails(I don't want to allow this). 12.1 it fails.

in other cases its working fine.

So if there is any simple way or regular expression, it will be very helpful.

Try this (I have assumed 12.00 is valid but 12, 12.0 are not):

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")
}  

尝试此操作,但这将允许零,您可能必须为此检查添加条件

/[0-9]+\.[0-9]{2}([^0-9]|$)/

If you are looking for, (15,15.0 is invalid) but (15.00) is valid. Try it,

^([1-9]{1,2})(\\.[0-9]{2})$

else if you are looking for 15,15.00 valid but 15.0 invalid Then try it..

^([1-9]{1,2}){1}(\\.[0-9]{2})?$

Working Fiddle Link.. http://regex101.com/r/mN1iT5/4

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM