簡體   English   中英

正則表達式強制小數點后兩位數

[英]Regular expression to enforce 2 digits after decimal point

我需要使用 JavaScript 驗證數字字符串,以確保該數字恰好有兩位小數。

只有在以下情況下,驗證才會通過

  1. 該數字恰好有兩位小數
  2. 小數點前至少有一位。 (可能為零)
  3. 小數點前的數字不能以超過一個零開頭。

有效號碼:

0.01
0.12
111.23
1234.56
012345.67
123.00
0.00

無效數字:

.12
1.1
0.0
00.00
1234.
1234.567
1234
00123.45
abcd.12
12a4.56
1234.5A

我試過正則表達式[0-9][\\.][0-9][0-9]$ ,但它允許小數點前的字母,如12a4.56

. 匹配任何字符,它不會做你認為它做的事情。 你必須逃避它。 此外,您還有兩個錯誤; 嘗試

^[0-9]+\.[0-9][0-9]$

相反,甚至更好,使用\\d表示十進制數字:

^\d+\.\d\d$

這涵蓋了所有要求

^(0|0?[1-9]\d*)\.\d\d$
  • 該數字恰好有兩位小數
    • 由於非可選\\.\\d\\d$

另外兩個條件可以重新表述如下:

  • 小數點前的數字要么是零
  • 或一個正好有一個零的數字,然后是一個以零開頭的數字

這包括在這兩種情況下:

  • 0
  • 0?[1-9]\\d*

為此,您不需要正則表達式。

JavaScript 有一個函數toFixed()您的需求。

var fixedtotwodecimals = floatvalue.toFixed(2);
var values='0.12';

document.write(values.match(/\d+[.]+\d+\d/));

根據需要更改值並檢查它

我用過這個

^[1-9][1-9]*[.]?[1-9]{0,2}$

  • 0 不接受

  • 123.12 接受但 123.123 不接受

  • 1 接受

  • 12213123 接受

  • sdfsf 不接受

  • 15.12 接受

  • 15@12 不接受

  • 15&12不接受

這里是:

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

試試這個代碼

pattern="[0-9]*(\.?[0-9]{1,2}$)?"
  • 1 有效

  • 1.1 有效

  • 1.12 有效

  • 1.123 無效

  • 只有數字有效

    模式="[0-9]*(.?[0-9]{2}$)?"

  • 1 有效

  • 1.1 無效

  • 1.12 有效

  • 1.123 無效

  • 只有數字有效

暫無
暫無

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

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