2011-11-04 31 views
0

我想在JavaScript中制定一個正則表達式來獲得美分形式的一個有小數點的數字。例如,可從454.2700000獲得27的表達式。我知道如何用split和substring來做到這一點,但是使用正則表達式還是有一個更簡單的方法。由於在Javascript中使用正則表達式得到美分

+0

我不是100%肯定,但我認爲,正則表達式是不是串等慢。至少在PHP中,正則表達式比字符串函數慢。 –

+1

''12 .24'.split('。')[1]'似乎非常合適。 –

+0

這並不包括我在我的例子中的以下零 – user815460

回答

1

看到它,如果你真的有一個號碼,你想一個數字,爲​​什麼要使用字符串?

var n=454.27; 
var cents=Math.round(n*100)%100; 

如果n是一個數字字符串,乘法把它轉換成一個數字:

var n= '454.270000'; 
var cents=Math.round(n*100)%100; 
2

下小數點後兩位數字解析出:

/\.(\d{2})/ 
  • \.意味着一個點
  • \d意味着一個數字
  • {2}意味着他們兩個
  • ()捕捉這部分比賽

拿到賽,使用.exec[1]

/\.(\d{2})/.exec("454.2700000")[1]; // "27" 
0

下面的正則表達式將返回你想要的東西:

/(?:\.)(\d\d)/.exec(454.2700000)[1] 
+1

非捕獲組是不必要的。 –

0

你可以做一個正則表達式測試

/\.(\d+)$/.test(454.2700000) 

並在這裏得到你的分,parseInt(RegExp.$1, 10)。解析整數條帶零。

或者如果您總是需要兩位小數,請將我的\ d +替換爲pimvbd的\ d {2},然後您可以僅使用RegExp。$ 1而不使用parseInt。

你可以在這裏http://jsfiddle.net/nickyt/qbsfY

+0

它匹配。我在Chrome的JS控制檯中測試了它,除非他先從字符串中提取這個數字。 – nickytonline

+0

糟糕。對不起,我誤解了你的正則表達式。但是我仍然沒有看到'parseInt(2700000,10)'將如何返回27。 –

+0

@Tim Pietzcker:我相信這個數字事先被解析過,當轉換成一個字符串時,零點已經消失了。 – pimvdb

相關問題