有效我試圖做一個十進制正則表達式來允許數字,如:正則表達式與小數點後兩位。在結束
12.
12.23
.12
0.34
但不是:
[email protected]
12.2a
大多數正則表達式我試圖在年底不驗證.
的。
有效我試圖做一個十進制正則表達式來允許數字,如:正則表達式與小數點後兩位。在結束
12.
12.23
.12
0.34
但不是:
[email protected]
12.2a
大多數正則表達式我試圖在年底不驗證.
的。
這應該工作:
/^\d+(?:\.\d*)|\d*(?:\.\d+)$/
它匹配:
12.
12.23
.12
0.34
我已經說了。作爲可選項^ \ d +(?:\。\ d *)?| \ d *(?:\。\ d +)$ 但我也想限制後面的2位數。 –
@aryankumar:無問題:'/^\d+(?:\.\d{0,2})| \ d *(?:\。\ d {1,2})$ /' – user278064
它不起作用現在。你能檢查嗎?謝謝! –
嘗試以下方法:
^(?:\d+(?:\.\d*)?|\.\d+)$
表達(?:\d+(?:\.\d*)?
的第一部分相匹配的一個或多個數字\d+
被後跟一個字面點以及零個或多個數字(?:\.\d*)
的任意組合。
第二部分\.\d+
相匹配的文本點.
後面跟着一個或多個數字,這是需要像.34
,.3
等相匹配的數字..
羽絨選民關心評論? –
downvote可能是因爲他們只想在小數點後面最多允許兩位數字,所以這不能回答問題的要求。 –
@AnthonyGrist OP沒有這麼說,並且據我所知,這不是一個拒絕投票的理由。我覺得這裏有一種仇恨。 –
正則表達式只需要檢查有是在0,1或2數字之前和/或之後的點。
/^\d{0,2}\.\d{0,2}$/
\.
點和\d{0,2}
比賽0〜2位數相匹配。
最後,\d{0,2}\.\d{0,2}
被包裝在^
和$
之間,以確保將被檢查的值只包含一個格式如此的數字。
錯誤,因爲這將匹配'.' - 請參閱http://jsfiddle.net/jsVyc/ –
如果在點之前或之後可以省略0,我認爲匹配'.'也可以。從作者那裏得到的一些澄清是很棒的。 – Cattode
這就是我一直在尋找的東西。謝謝Cattode。 –
發現這對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
這一個什麼:/^(\d*|\d*\.\d{1,2}|\d+\.\d{0,2})$/
這似乎working:
/^[\.?\d]+$/
顯示失敗的嘗試。 – Zaffy
你能告訴我們你有*試過的東西嗎? – phuzi
爲什麼不使用'parseFloat' – bhb