[英]Regex in JavaScript for validating decimal numbers
I want a regex in JavaScript for validating decimal numbers.我想要 JavaScript 中的正则表达式来验证十进制数。
It should allow only up to two decimal places.它应该只允许最多两位小数。 For example, it should allow
10.89
but not 10.899
.例如,它应该允许
10.89
但不允许10.899
。
It should also allow only one period ( .
).它还应该只允许一个句点 (
.
)。 For example, it should allow 10.89
but not 10.8.9
.例如,它应该允许
10.89
但不允许10.8.9
。
Try the following expression: ^\d+\.\d{0,2}$
If you want the decimal places to be optional, you can use the following: ^\d+(\.\d{1,2})?$
尝试以下表达式:
^\d+\.\d{0,2}$
如果您希望小数位是可选的,您可以使用以下表达式:^\ ^\d+(\.\d{1,2})?$
EDIT: To test a string match in Javascript use the following snippet:编辑:要测试 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("...");
/ /
: the beginning and end of the expression / /
: 表达式的开始和结束^
: whatever follows should be at the beginning of the string you're testing ^
:后面的内容应该在您正在测试的字符串的开头\d+
: there should be at least one digit \d+
:应该至少有一个数字( )?
: this part is optional \.
: here goes a dot \d{1,2}
: there should be between one and two digits here \d{1,2}
:这里应该有一位到两位数字$
: whatever precedes this should be at the end of the string you're testing $
:这之前的任何内容都应该在您正在测试的字符串的末尾If you also want to support negative decimals, you just need to add -?
如果你也想支持负小数,你只需要添加
-?
right after the ^
, which means that an optional minus sign is allowed there as well.就在
^
之后,这意味着那里也允许有一个可选的减号。
You can use regexr.com or regex101.com for testing regular expressions directly in the browser!您可以使用regexr.com或regex101.com直接在浏览器中测试正则表达式!
^\d+(\.\d{1,2})?$
will allow:将允许:
244
10.89
9.5
will disallow:将不允许:
10.895
10.
10.8.9
Numbers with at most 2 decimal places:最多保留 2 位小数的数字:
/^\d+(?:\.\d{1,2})?$/
This should work fine.这应该可以正常工作。 Please try out:)
请尝试:)
Please see my project of the cross-browser filter of value of the text input element on your web page using JavaScript language: Input Key Filter .请在您的 web 页面上使用 JavaScript 语言查看我的文本输入元素值的跨浏览器过滤器项目:输入键过滤器。 You can filter the value as an integer number, a float number, or write a custom filter, such as a phone number filter.
您可以将该值过滤为 integer 数字、浮点数,或编写自定义过滤器,例如电话号码过滤器。 See an example of custom filter of input of an float number with decimal pointer and limitation to 2 digit after decimal pointer:
请参阅带有十进制指针的浮点数输入的自定义过滤器示例,并限制为小数指针后的 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>
Also see my page example of the input key filter另请参阅我的输入键过滤器页面示例
I found that I could use我发现我可以使用
^\d+(\.\d+)?$
for more than two decimal places.小数点后两位以上。
Try a regular expression like this:试试这样的正则表达式:
(?=[^\0])(?=^([0-9]+){0,1}(\.[0-9]{1,2}){0,1}$)
Allowed: 1, 10.8, 10.89, .89, 0.89, 1000允许: 1、10.8、10.89、0.89、0.89、1000
Not Allowed: 20. , 50.89.9, 12.999, ., Null character Note this works for positive numbers不允许: 20. , 50.89.9, 12.999, ., Null 字符注意这适用于正数
Since you asked for decimal numbers validation, for completeness' sake, I'd use a regex that doesn't allow strings like 06.05.由于您要求进行十进制数字验证,为了完整起见,我将使用不允许像 06.05 这样的字符串的正则表达式。
^((0(\.\d{1,2})?)|([1-9]\d*(\.\d{1,2})?))$
Slightly more complicated, but returns false in that case.稍微复杂一些,但在那种情况下返回 false。
Edit:编辑:
^-?((0(\.\d{1,2})?)|([1-9]\d*(\.\d{1,2})?))$
if you want negative numbers as well.如果你也想要负数。
as compared from the answer gven by mic... it doesnt validate anything in some of the platforms which i work upon... to be precise it doesnt actually work out in Dream Viewer..与 mic 给出的答案相比...它没有验证我工作的某些平台中的任何内容...准确地说它在 Dream Viewer 中实际上没有用..
hereby.. i re-write it again..which will work on any platform.. "^[0-9]+(.[0-9]{1,2})?$".. thnkss..特此..我重新写了一遍..它可以在任何平台上运行.. "^[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";
}
}
This is the function which will take decimal number with any number of decimal places and without any decimal places.这是 function,它将采用具有任意小数位和不带小数位的十进制数。
Thanks... :)谢谢... :)
The schema for passing the value in as a string.将值作为字符串传递的架构。 The regex will validate a string of at least one digit, possibly followed by a period and exactly two digits:
正则表达式将验证至少包含一位数字的字符串,可能后跟一个句点和恰好两位数字:
{
"type": "string",
"pattern": "^[0-9]+(\\.[0-9]{2})?$"
}
The schema below is equivalent, except that it also allows empty strings:下面的模式是等效的,除了它还允许空字符串:
{
"type": "string",
"pattern": "^$|^[0-9]+(\\.[0-9]{2})?$"
}
Does this work?这行得通吗?
[0-9]{2}.[0-9]{2}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.