[英]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("...");
/ /
: 表達式的開始和結束^
:后面的內容應該在您正在測試的字符串的開頭\d+
:應該至少有一個數字( )?
: 這部分是可選的\.
: 這里有一個點\d{1,2}
:這里應該有一位到兩位數字$
:這之前的任何內容都應該在您正在測試的字符串的末尾如果你也想支持負小數,你只需要添加-?
就在^
之后,這意味着那里也允許有一個可選的減號。
您可以使用regexr.com或regex101.com直接在瀏覽器中測試正則表達式!
^\d+(\.\d{1,2})?$
將允許:
244
10.89
9.5
將不允許:
10.895
10.
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.