简体   繁体   English

用于检查值的正则表达式必须仅允许小数点后两位数字?

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

I'm working on asp.net web application project. 我正在研究asp.net Web应用程序项目。

I'm taking input from a TextBox. 我正在从TextBox接受输入。 TextBox must allow a numeric value which is greater than zero and must have two digits after decimal. TextBox必须允许一个大于零的数字值,并且十进制后必须有两位数字。

I'm validating textbox in javascript. 我正在验证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.0失败(我不想允许)。 12.1 it fails. 12.1它失败。

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): 试试这个(我假设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")
}  

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

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

If you are looking for, (15,15.0 is invalid) but (15.00) is valid. 如果要查找,则(15,15.0无效),但(15.00)有效。 Try it, 试试吧,

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

else if you are looking for 15,15.00 valid but 15.0 invalid Then try it.. 否则,如果您正在寻找15,15.00有效但15.0无效,请尝试。

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

Working Fiddle Link.. http://regex101.com/r/mN1iT5/4 工作小提琴链接.. http://regex101.com/r/mN1iT5/4

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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