簡體   English   中英

用於檢查值的正則表達式必須僅允許小數點后兩位數字?

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

我正在研究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它失敗。

在其他情況下,它可以正常工作。

因此,如果有任何簡單的方法或正則表達式,將非常有幫助。

試試這個(我假設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]|$)/

如果要查找,則(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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM