簡體   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