我需要一個匹配0到99.999之間數字的正則表達式(99,999也是有效的)。用於匹配數字的正則表達式0-99.999
有效例子:
1,1
99.9
12.876
1,777
無效的例子:
9837,83
-12,24
11.1112
我需要一個匹配0到99.999之間數字的正則表達式(99,999也是有效的)。用於匹配數字的正則表達式0-99.999
有效例子:
1,1
99.9
12.876
1,777
無效的例子:
9837,83
-12,24
11.1112
將這項工作?
[0-9]{1,2}[.,][0-9]{1,3}
此匹配類似的東西這樣的:
0.0
/01,1
99,999
/09.009
但不是這樣的東西:
.0
/,1
/1
/01
099,999
/09.0090
希望它幫助。
^\d{1,2}(?:[.,]\d{1,3})?$
應該做的。
說明:
^ # anchor the match at the start of the string
\d{1,2} # match one or two digits
(?: # optionally match the following group:
[.,] # a . or ,
\d{1,3} # 1-3 digits
)? # end of optional group
$ # anchor the match the end of the string
如果你想查一個號碼是你不應該使用正則表達式在一定範圍內,它是太遠的你在做什麼邏輯,很難去除調試。我會首先用小數點替換逗號。然後檢查範圍。
如(JavaScript)的
function isValid(inputString)
{
var number=parseFloat(inputString.replace(',','.'));
return (number>=0 && number <=99.999);
}
更新回答
上述解決方案沒有考慮業務方案的要求,具有精度不超過3位小數。
function isValid(inputString){
var number=parseFloat(inputString.replace(',','.'));
validPrecision = true;
if (inputString.split('.')[1]) {
validPrecision=inputString.split('.')[1].length<=3;}
return (number>=0 && number <=99.999 && validPrecision);
};
下面的工作:
^\d{1,2}((,|.)\d{1,3})?$
我不明白你的要求。你說它應該從0開始,以99.999或99,999結束?但你的例子沒有顯示這一點。你能否通過分開行來使你的例子更加清晰。 – 2011-01-10 14:10:50
另外,你在哪個開發環境中工作? – 2011-01-10 14:11:17
@ElRonnoco:我幾乎可以看到「0-99.999之間的數字」(並使用[十進制逗號](http://en.wikipedia.org/wiki/Decimal_mark#Countries_using_Arabic_numerals_with_decimal_comma))。 – 2011-01-10 14:14:08