[英]Regex to validate whole and decimal numbers in a textarea
我有一个textarea,每个新行只能接受整数和十进制数。 我需要一个JQuery正则表达式来验证Focus Out上的输入。 因此,基本上每一行的值都应该是整数或小数。
例如:
有效方案:
1
51425.125
2552
600000
1.51425
3.65
无效的方案:
.123
123.
123. 56
1213.56.25
234. (spaces after the decimal point)
我尝试了各种正则表达式组合,但似乎都无法完美工作:
\b\s([-+]?(\d+|\.\d+|\d+\.\d*))($|[^+-.])
当有两个十进制值时,此正则表达式将失败。
\b[0-9\s]*(\.*[0-9\s]*)*
此正则表达式在值之间和之后留有空格。
\b(?:^|\s)(?=.)((?:0|(?:[1-9](?:\d*|\d{0,2}(?:,\d{3})*)))?(?:\.\d*[1-9])?)(?!\S)
此正则表达式不允许用户输入多行值。
通过几个链接,但似乎没有一个对我有用:
十进制或空白的正则表达式
正则表达式-带空格和小数逗号的数字
十进制数正则表达式,其中十进制后的数字是可选的
http://regexone.com/problem/matching_decimal_numbers
看到这个 JSFiddle:
/^\d+(?:\.\d+)?$/gm
的JavaScript
$("#input").on("input", function(){
var validateThis = $(this).val();
var validateCount = validateThis.split("\n").length;
var result = validateThis.match(/^\d+(?:\.\d+)?$/gm);
if(result && result.length == validateCount){
$("#result").text("Valid input! :)");
} else{
$("#result").text("Invalid input! :(");
}
});
的HTML
<textarea id="input" rows="4"></textarea>
<div id="result"></div>
那么我们可以在RegeEx中包含\\ n或\\ r \\ n吗?
我们可以。 这是一个测试整个文本是否由带数字的行组成的表达式:
^\d+(\.\d+)?(\n\d+(\.\d+)?)*\n?$
^
… $
-整个文本必须匹配。 \\d+(\\.\\d+)?
-至少一位数字,并可选地后跟一个句点和至少一位数字 (\\n…)*
-后跟任意数量(包括零)的:换行符,并带有… \\n?
-如果需要,请在末尾添加换行符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.