正则表达式验证textarea中的整数和十进制数

时间:2015-12-10 14:36:19

标签: javascript jquery regex

我有一个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*))($|[^+-.])

当有2个十进制值时,此正则表达式失败。

\b[0-9\s]*(\.*[0-9\s]*)*

此正则表达式允许值之间和之后的空格。

\b(?:^|\s)(?=.)((?:0|(?:[1-9](?:\d*|\d{0,2}(?:,\d{3})*)))?(?:\.\d*[1-9])?)(?!\S)

此正则表达式不允许用户输入多行值。

通过几个链接但似乎没有一个对我有用:
Regular Expression for Decimal or Blank
Regular expression - number with spaces and decimal comma
Decimal number regular expression, where digit after decimal is optional
http://regexone.com/problem/matching_decimal_numbers

2 个答案:

答案 0 :(得分:0)

参见this JSFiddle:

class Inst[T] { 
  def foo(x: Any)(implicit ev: T <:< String) = scala.util.Try {
    ev(as(x)).reverse
  }.isSuccess
}

new Inst[String].foo(3)  // false!

的JavaScript

/^\d+(?:\.\d+)?$/gm

HTML

$("#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! :(");
    }
});

答案 1 :(得分:0)

  

那么我们可以在RegeEx中包含\ n或\ r \ n吗?

是的,我们可以。这是一个表达式,用于测试整个文本是否由带数字的行组成:

^\d+(\.\d+)?(\n\d+(\.\d+)?)*\n?$
  • ^ ... $ - 整篇文字必须匹配。
  • \d+(\.\d+)? - 至少一个数字,可选地后跟一个句号和至少一个数字
  • (\n…)* - 后跟任意数字(包括零):换行符......
  • \n? - 最后允许换行(如果您愿意)。