繁体   English   中英

正则表达式验证文本区域中的整数和十进制数字

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM