2013-10-16 74 views

回答

0

這應該工作:

/^\d+(?:\.\d*)|\d*(?:\.\d+)$/ 

它匹配:

12. 

12.23 

.12 

0.34 
+0

我已經說了。作爲可選項^ \ d +(?:\。\ d *)?| \ d *(?:\。\ d +)$ 但我也想限制後面的2位數。 –

+0

@aryankumar:無問題:'/^\d+(?:\.\d{0,2})| \ d *(?:\。\ d {1,2})$ /' – user278064

+0

它不起作用現在。你能檢查嗎?謝謝! –

-1

嘗試以下方法:

^(?:\d+(?:\.\d*)?|\.\d+)$ 

表達(?:\d+(?:\.\d*)?的第一部分相匹配的一個或多個數字\d+被後跟一個字面點以及零個或多個數字(?:\.\d*)的任意組合。

第二部分\.\d+相匹配的文本點.後面跟着一個或多個數字,這是需要像.34.3等相匹配的數字..

Regex101 Demo

+0

羽絨選民關心評論? –

+0

downvote可能是因爲他們只想在小數點後面最多允許兩位數字,所以這不能回答問題的要求。 –

+0

@AnthonyGrist OP沒有這麼說,並且據我所知,這不是一個拒絕投票的理由。我覺得這裏有一種仇恨。 –

0

正則表達式只需要檢查有是在0,1或2數字之前和/或之後的點。

/^\d{0,2}\.\d{0,2}$/ 

\.點和\d{0,2}比賽0〜2位數相匹配。

最後,\d{0,2}\.\d{0,2}被包裝在^$之間,以確保將被檢查的值只包含一個格式如此的數字。

+0

錯誤,因爲這將匹配'.' - 請參閱http://jsfiddle.net/jsVyc/ –

+0

如果在點之前或之後可以省略0,我認爲匹配'.'也可以。從作者那裏得到的一些澄清是很棒的。 – Cattode

+0

這就是我一直在尋找的東西。謝謝Cattode。 –

0

發現這對MDN

var filterFloat = function (value) 
    { 
    if(/^\-?([0-9]+(\.[0-9]+)?|Infinity)$/ 
     .test(value)) 
     return Number(value); 
    return NaN; 
    } 
console.log(filterFloat('421')); 
// 421 
console.log(filterFloat('-421')); 
// -421 
console.log(filterFloat('Infinity')); 
// Infinity 
console.log(filterFloat('1.61803398875')); 
// 1.61803398875 
console.log(filterFloat('421e+0')); 
// NaN 
console.log(filterFloat('421hop')); 
// NaN 
console.log(filterFloat('hop1.61803398875')); 
// NaN 
0

這一個什麼:/^(\d*|\d*\.\d{1,2}|\d+\.\d{0,2})$/

0

這似乎working:

/^[\.?\d]+$/