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