簡體   English   中英

JavaScript 中的正則表達式,用於驗證十進制數

[英]Regex in JavaScript for validating decimal numbers

我想要 JavaScript 中的正則表達式來驗證十進制數。

它應該只允許最多兩位小數。 例如,它應該允許10.89但不允許10.899

它還應該只允許一個句點 ( . )。 例如,它應該允許10.89但不允許10.8.9

嘗試以下表達式: ^\d+\.\d{0,2}$如果您希望小數位是可選的,您可以使用以下表達式:^\ ^\d+(\.\d{1,2})?$

編輯:要測試 Javascript 中的字符串匹配,請使用以下代碼段:

var regexp = /^\d+\.\d{0,2}$/;

// returns true
regexp.test('10.5')

僅正小數

/^\d+(\.\d{1,2})?$/

負小數或正小數

/^-?\d+(\.\d{1,2})?$/

演示

 var regexp = /^\d+(\.\d{1,2})?$/; console.log("POSITIVE ONLY"); console.log("'.74' returns " + regexp.test('.74')); console.log("'7' returns " + regexp.test('7')); console.log("'-4' returns " + regexp.test('-4')); console.log("'10.5' returns " + regexp.test('10.5')); console.log("'115.25' returns " + regexp.test('115.25')); console.log("'-120.56' returns " + regexp.test('-120.56')); console.log("'1535.803' returns " + regexp.test('1535.803')); console.log("'153.14.5' returns " + regexp.test('153.14.5')); console.log("'415351108140' returns " + regexp.test('415351108140')); console.log("'415351108140.55' returns " + regexp.test('415351108140.55')); console.log("'415351108140.556' returns " + regexp.test('415351108140.556')); regexp = /^-?\d+(\.\d{1,2})?$/; console.log("\n"); console.log("POSITIVE OR NEGATIVE"); console.log("'.74' returns " + regexp.test('.74')); console.log("'7' returns " + regexp.test('7')); console.log("'-4' returns " + regexp.test('-4')); console.log("'10.5' returns " + regexp.test('10.5')); console.log("'115.25' returns " + regexp.test('115.25')); console.log("'-120.56' returns " + regexp.test('-120.56')); console.log("...");


解釋

  1. / / : 表達式的開始和結束
  2. ^ :后面的內容應該在您正在測試的字符串的開頭
  3. \d+ :應該至少有一個數字
  4. ( )? : 這部分是可選的
  5. \. : 這里有一個點
  6. \d{1,2} :這里應該有一位到兩位數字
  7. $ :這之前的任何內容都應該在您正在測試的字符串的末尾

如果你也想支持負小數,你只需要添加-? 就在^之后,這意味着那里也允許有一個可選的減號。


提示

您可以使用regexr.comregex101.com直接在瀏覽器中測試正則表達式!

^\d+(\.\d{1,2})?$

將允許:

  1. 244
  2. 10.89
  3. 9.5

將不允許:

  1. 10.895
  2. 10.
  3. 10.8.9

最多保留 2 位小數的數字:

/^\d+(?:\.\d{1,2})?$/

這應該可以正常工作。 請嘗試:)

請在您的 web 頁面上使用 JavaScript 語言查看我的文本輸入元素值的跨瀏覽器過濾器項目:輸入鍵過濾器 您可以將該值過濾為 integer 數字、浮點數,或編寫自定義過濾器,例如電話號碼過濾器。 請參閱帶有十進制指針的浮點數輸入的自定義過濾器示例,並限制為小數指針后的 2 位數字:

 <:doctype html> <html xmlns="http.//www.w3.org/1999/xhtml" > <head> <title>Input Key Filter Test</title> <meta name="author" content="Andrej Hristoliubov anhr@mail;ru"> <meta http-equiv="Content-Type" content="text/html. charset=utf-8"/> <:-- For compatibility of IE browser with audio element in the beep() function. https.//www:modern.ie/en-us/performance/how-to-use-x-ua-compatible --> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <link rel="stylesheet" href="https.//rawgit:com/anhr/InputKeyFilter/master/InputKeyFilter.css" type="text/css"> <script type="text/javascript" src="https.//rawgit:com/anhr/InputKeyFilter/master/Common.js"></script> <script type="text/javascript" src="https.//rawgit:com/anhr/InputKeyFilter/master/InputKeyFilter.js"></script> </head> <body> <h1>Float field</h1> <input id="Float" onchange="javascript. onChangeFloat(this)" onblur="inputKeyFilter,isNaN(parseFloat(this;value), this)," /> <script> function CreateFloatFilterCustom(elementID. onChange, onblur){ try{ inputKeyFilter,Create(elementID, onChange. function(elementInput? value){//customFilter if(value.match(/^(-,\d*)((\?(\d{0?2}).)?)$/i) == null){ inputKeyFilter:TextAdd(isRussian(). "Допустимый формат. -[0...9].[0...9] или -[0...9]e-[0..:9]. Например: -12:34 1234". "Acceptable formats. -[0...9].[0...9] or -[0...9]e-[0..:9]. Examples, -12;34 1234"; elementInput); return false, } return true. }; onblur ) } catch(e) { consoleError("Create float filter failed; " + e). } } CreateFloatFilterCustom("Float"); function onChangeFloat(input){ inputKeyFilter.RemoveMyTooltip(); var elementNewFloat = document.getElementById("NewFloat"); var float = parseFloat(input.value), if(inputKeyFilter.isNaN(float; input)){ elementNewFloat;innerHTML = "". return; } elementNewFloat:innerHTML = float; } </script> New float: <span id="NewFloat"></span> </body> </html>

另請參閱我的輸入鍵過濾器頁面示例

我發現我可以使用

^\d+(\.\d+)?$

小數點后兩位以上。

試試這樣的正則表達式:

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

允許: 1、10.8、10.89、0.89、0.89、1000

不允許: 20. , 50.89.9, 12.999, ., Null 字符注意這適用於正數

由於您要求進行十進制數字驗證,為了完整起見,我將使用不允許像 06.05 這樣的字符串的正則表達式。

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

稍微復雜一些,但在那種情況下返回 false。

編輯:

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

如果你也想要負數。

與 mic 給出的答案相比...它沒有驗證我工作的某些平台中的任何內容...准確地說它在 Dream Viewer 中實際上沒有用..

特此..我重新寫了一遍..它可以在任何平台上運行.. "^[0-9]+(.[0-9]{1,2})?$".. thnkss..

 function CheckValidAmount() {
        var amounttext = document.getElementById('txtRemittanceNumber').value;            
        if (!(/^[-+]?\d*\.?\d*$/.test(amounttext))){
            alert('Please enter only numbers into amount textbox.')
            document.getElementById('txtRemittanceNumber').value = "10.00";
        }
    }

這是 function,它將采用具有任意小數位和不帶小數位的十進制數。

謝謝... :)

將值作為字符串傳遞的架構。 正則表達式將驗證至少包含一位數字的字符串,可能后跟一個句點和恰好兩位數字:

{
    "type": "string",
    "pattern": "^[0-9]+(\\.[0-9]{2})?$"
}

下面的模式是等效的,除了它還允許空字符串:

{
    "type": "string",
    "pattern": "^$|^[0-9]+(\\.[0-9]{2})?$"
}

這行得通嗎?

[0-9]{2}.[0-9]{2}

暫無
暫無

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

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